<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.aspnetzone.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Peter Bucher : Assembly</title><link>http://www.aspnetzone.de/blogs/peterbucher/archive/tags/Assembly/default.aspx</link><description>Ordnungsbegriffe: Assembly</description><dc:language /><generator>CommunityServer 2.1 SP2 (Build: 61120.2)</generator><item><title>InternalsVisibleToAttribute und signierte Assemblies: So funktionierts garantiert.</title><link>http://www.aspnetzone.de/blogs/peterbucher/archive/2009/12/04/internalsvisibletoattribute-und-signierte-assemblies-so-funktionierts-garantiert.aspx</link><pubDate>Fri, 04 Dec 2009 15:46:00 GMT</pubDate><guid isPermaLink="false">ce930855-ae9b-4fa4-8077-06a76071cc6a:214947</guid><dc:creator>Peter Bucher</dc:creator><slash:comments>3</slash:comments><comments>http://www.aspnetzone.de/blogs/peterbucher/comments/214947.aspx</comments><wfw:commentRss>http://www.aspnetzone.de/blogs/peterbucher/commentrss.aspx?PostID=214947</wfw:commentRss><description>&lt;P&gt;Stellt euch vor, ihr habt zwei Assemblies:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MyProject.Core 
&lt;LI&gt;MyProject.Core.Tests &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Im Core-Projekt gibt es Typen, die nicht öffentlich gemacht werden sollten, allerdings für die UnitTests zugänglich sein sollen. &lt;BR&gt;Nun, das ist ein kleines Problem, wenn man das Attribut “InternalsVisibleTo” kennt, mithilfe folgender Dekleration in der &lt;STRONG&gt;AssemblyInfo.cs des MyProject.Core-Projekts&lt;/STRONG&gt; kann dies einfach erledigt werden:&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 14px;font-weight: normal;"&gt;[assembly: InternalsVisibleTo("MyProject.Core.Tests”)]&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;DIV class=Quotes&gt;&lt;BR =&gt;Das macht sogar sehr viel Sinn, denn sonst können Kollisionen und Verwechslungen der Extensionmethods beim Endbenutzer vorkommen.&lt;/DIV&gt;
&lt;P&gt;Soweit, so gut. Die Typen der MyProject.Core-Assembly sind jetzt in der MyProject.Core.Tests-Assembly sichtbar. &lt;BR&gt;Müssen die Projekte jedoch signiert sein, kommt es zu einem grösseren Problem.&lt;/P&gt;
&lt;P&gt;In &lt;A href="http://www.sturmnet.org/blog/2005/05/10/internalsvisibleto-sn"&gt;mehreren&lt;/A&gt; Blogs sind die nötigen Schritte &lt;A href="http://weblogs.asp.net/bhouse/archive/2006/04/17/443100.aspx"&gt;beschrieben&lt;/A&gt;, &lt;U&gt;jedoch werden da wichtige Punkte nicht genannt&lt;/U&gt;, die einem zur Verzweiflung treiben können. &lt;BR&gt;Die sind wie folgt:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Alle involvierten Assemblies müssen signiert werden. 
&lt;LI&gt;Der PublicKey muss vom Projekt bezogen werden, bei dem die Internals sichtbar werden sollen, in unserem Fall also das MyProject.Core.Tests-Projekt. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Nach einer weiteren Suche bin ich schlussendlich auf einem (selbsternannten) Newbie-Blog fündig geworden. &lt;BR&gt;Noch später sties ich dann auf die folgende Anleitung, die eigentlich alles beinhaltet, sodass ich nicht alles im Detail niederschreiben muss, trotzdem die wichtigen Punkte nennen kann und vorallem die Lösung wieder einmal finde:&lt;/P&gt;
&lt;P&gt;Also, beachtet die oben stehenden zwei Punkte und haltet euch an folgende Anleitung:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title=http://statestreetgang.net/post/2008/04/InternalsVisibleToAttribute-and-Strong-Named-Assemblies-Step-by-Step.aspx href="http://statestreetgang.net/post/2008/04/InternalsVisibleToAttribute-and-Strong-Named-Assemblies-Step-by-Step.aspx"&gt;http://statestreetgang.net/post/2008/04/InternalsVisibleToAttribute-and-Strong-Named-Assemblies-Step-by-Step.aspx&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://www.aspnetzone.de/aggbug.aspx?PostID=214947" width="1" height="1"&gt;</description><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/Tipps/default.aspx">Tipps</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/Assembly/default.aspx">Assembly</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/InternalsVisibleTo/default.aspx">InternalsVisibleTo</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/StrongName/default.aspx">StrongName</category></item><item><title>Mehrere Sprachen in eine Assembly kompilieren / mergen</title><link>http://www.aspnetzone.de/blogs/peterbucher/archive/2008/04/08/mehrere-sprachen-in-eine-assembly-kompilieren-mergen.aspx</link><pubDate>Tue, 08 Apr 2008 18:49:00 GMT</pubDate><guid isPermaLink="false">ce930855-ae9b-4fa4-8077-06a76071cc6a:194529</guid><dc:creator>Peter Bucher</dc:creator><slash:comments>2</slash:comments><comments>http://www.aspnetzone.de/blogs/peterbucher/comments/194529.aspx</comments><wfw:commentRss>http://www.aspnetzone.de/blogs/peterbucher/commentrss.aspx?PostID=194529</wfw:commentRss><description>&lt;P&gt;Ich dachte lange, wenn ich ein VB.NET- und ein C#-Projekt habe, geht es nicht, daraus eine einzige Assembly zu erzeugen.&lt;BR&gt;Und wenn, dann nur mit Abstrichen in der Handlichkeit des ganzen, also keine Visual Studio Integration, Debuggin, Intellisense, etc..&lt;/P&gt;
&lt;P&gt;Nun, eine kleine Resserche Heute Abend und ich wurde gleich zweimal vom Gegenteil überzeugt.&lt;BR&gt;Vorneweg, ich möchte das im Normalfall natürlich niemandem empfehlen, wenn es jedoch unvermeindlich ist, oder aber Vorteile mit sich bringt, wieso nicht? :-)&lt;/P&gt;
&lt;P&gt;Ganz nützlich wenn eine Control Sammlungs Assembly erstellt werden muss, und Controls in VB.NET, wie auch C# bestehen :-)&lt;/P&gt;
&lt;P&gt;Hier die erklärenden Links (Englisch):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.hanselman.com/blog/MixingLanguagesInASingleAssemblyInVisualStudioSeamlesslyWithILMergeAndMSBuild.aspx"&gt;Mixing Languages in a Single Assembly in Visual Studio seamlessly with ILMerge and MSBuild &lt;EM&gt;(Super Integration ins Visual Studio, Debugging, etc..)&lt;/EM&gt;&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://thomasfreudenberg.com/blog/archive/2006/08/22/Mixing-C_2300_-and-VB.NET-in-one-assembly.aspx"&gt;Mixing C# and VB.NET in one assembly &lt;EM&gt;(Eine etwas einfachere Alternative)&lt;/EM&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://www.aspnetzone.de/aggbug.aspx?PostID=194529" width="1" height="1"&gt;</description><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/mixen/default.aspx">mixen</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/merge/default.aspx">merge</category><category domain="http://www.aspnetzone.de/blogs/peterbucher/archive/tags/Assembly/default.aspx">Assembly</category></item></channel></rss>