Ich habe 2 Projekte in meiner Lösung:
- Assembly (Basisbibliothek)
- Testbaugruppe (NUnit)
Ich hatte die Testversammlung im ersten Projekt als Versammlung der Freunde deklariert:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Alles funktionierte einwandfrei, bis mir klar wurde, dass ich vergessen habe, die Lösung zum Signieren meiner Baugruppen einzurichten. Erstellen Sie also eine snk-Datei und richten Sie das Visual Studio-Projekt so ein, dass die erste Assembly (Basisbibliothek) signiert wird. Wenn ich jetzt das erste Projekt kompiliere, wird folgende Fehlermeldung angezeigt:
Die Freundschafts-Assembly-Referenz 'Company.Product.Tests' ist ungültig. Assemblys mit starkem Namen müssen in ihren InternalsVisibleTo-Deklarationen einen öffentlichen Schlüssel angeben.
Ich habe versucht, den öffentlichen Schlüssel mit dem Dienstprogramm sn aus meiner snk-Datei zu extrahieren, aber es wird eine drahtgebundene Binärdatei generiert, deren Verwendung ich nicht sicher bin. Wie kann ich das Problem beheben?
AssemblyInfo.cs
. Seitdem ist der richtige Name der zu verwendende Name der Assembly-Name aus dem Dialogfeld Eigenschaften / Anwendung des Projekts (der sich wiederum vom Projektnamen im Solution Explorer von Visual Studio unterscheidet).Mit sn.exe können Sie publicKey direkt von einer Assembly abrufen, die Sie interessiert, ohne Magie
quelle
Ich denke, Sie müssen den starken Namen eingeben, der so etwas wie "Company.Product.Tests, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 17135d9fcba0119f" wäre. Ich gehe davon aus, dass Company.Product.Tests Ihr Assemblyname und 17135d9fcba0119f der öffentliche Schlüssel ist.
Eine andere Möglichkeit, dieses Problem zu beheben, besteht darin, keine separaten Assemblys zu verwenden. Normalerweise füge ich den Quellcode und den Testcode in dieselbe Assembly ein. Ich weiß nicht, ob Sie besondere Bedenken haben, dass Sie sie trennen müssen.
quelle