Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

InternalsVisibleToAttribute und signierte Assemblies: So funktionierts garantiert.

Stellt euch vor, ihr habt zwei Assemblies:

  • MyProject.Core
  • MyProject.Core.Tests

Im Core-Projekt gibt es Typen, die nicht öffentlich gemacht werden sollten, allerdings für die UnitTests zugänglich sein sollen.
Nun, das ist ein kleines Problem, wenn man das Attribut “InternalsVisibleTo” kennt, mithilfe folgender Dekleration in der AssemblyInfo.cs des MyProject.Core-Projekts kann dies einfach erledigt werden:

[assembly: InternalsVisibleTo("MyProject.Core.Tests”)]


Das macht sogar sehr viel Sinn, denn sonst können Kollisionen und Verwechslungen der Extensionmethods beim Endbenutzer vorkommen.

Soweit, so gut. Die Typen der MyProject.Core-Assembly sind jetzt in der MyProject.Core.Tests-Assembly sichtbar.
Müssen die Projekte jedoch signiert sein, kommt es zu einem grösseren Problem.

In mehreren Blogs sind die nötigen Schritte beschrieben, jedoch werden da wichtige Punkte nicht genannt, die einem zur Verzweiflung treiben können.
Die sind wie folgt:

  • Alle involvierten Assemblies müssen signiert werden.
  • Der PublicKey muss vom Projekt bezogen werden, bei dem die Internals sichtbar werden sollen, in unserem Fall also das MyProject.Core.Tests-Projekt.

Nach einer weiteren Suche bin ich schlussendlich auf einem (selbsternannten) Newbie-Blog fündig geworden.
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:

Also, beachtet die oben stehenden zwei Punkte und haltet euch an folgende Anleitung:

Veröffentlicht Freitag, 4. Dezember 2009 16:46 von Peter Bucher

Kommentare

# Twitter Trackbacks for Peter Bucher : InternalsVisibleToAttribute und signierte Assemblies: So funktionierts garantiert. [aspnetzone.de] on Topsy.com

# re: InternalsVisibleToAttribute und signierte Assemblies: So funktionierts garantiert.

Hi Peter,

ich weiß nicht, wie oft ich den von Dir angegebenen Link jetzt schon genutzt habe, aber es ist extrem praktisch, das für die Zukunft immer griffbereit zu haben :-)!

Viele Grüße,

Golo

Mittwoch, 10. Februar 2010 08:13 by Golo Roden

# Privaten Code testen

Privaten Code testen

Samstag, 7. August 2010 00:40 by Golo Roden
Anonyme Kommentare sind nicht zugelassen