Ich habe Probleme mit dem Bau einiger Projekte. bitte betrachten Sie dieses Szenario:
- Ich habe 2 Projekte, zum Beispiel A und B.
- es gibt einen Verweis von A nach B
- Das Projekt von B wurde stark signiert (ich wollte aus bestimmten Gründen nicht, dass es signiert wird, also habe ich beschlossen, das Kontrollkästchen "Baugruppe signieren" zu entfernen)
-
gab es eine Code-Zeile in AssemblyInfo.cs Datei im A-Projekt sagt:
[assembly: InternalsVisibleTo("B,publicKey=0024......")]
Ich habe es geändert in:
[assembly: InternalsVisibleTo("B")]
Wenn ich nun eine der folgenden Dateien kompiliere Projekte kompiliere, wird ein Fehler angezeigt, der besagt:
Die Referenz der Freundesgruppe 'B' ist ungültig. Strong-name signierte Assemblies müssen einen öffentlichen Schlüssel in ihren InternalsVisibleTo-Deklarationen angeben.
Meine Frage ist hier: wie Compiler wissen, dass es eine signierte Assembly irgendwann war? und wie kann ich vollständig entfernen stark signiert aus Assembly von B und schließlich bauen sie richtig?
bearbeitet: Nebenbei bemerkt Bitte beachten Sie, dass beide Themen nicht stark signiert sind, da ich beide Kontrollkästchen "sign the assembly" aus den Projekteigenschaften entfernt habe.
Wenn ich den Namen der Baugruppe auf einen falschen Namen wie "bla_bla_bla" änderte, der nicht einmal existiert, ist der Fehler derselbe!
[assembly: InternalsVisibleTo("bla_bla_bla")]
Ich glaube, dass diese Theorie wahr ist:
in der Tat B Projekt nicht kompiliert, und wenn es nicht finden, die übereinstimmende kompilierten Projektnamen (beim Bau von Projekt A), Compiler vermuten, dass B Projekt stark mit dem öffentlichen Schlüssel, dass der Entwickler nicht zur Verfügung gestellt hat es signiert! und schließlich wird es so seltsam Fehler prompt!
aus dem Grund der B hat einen Verweis auf A, wenn ich B-Projekt kompilieren, wird es kompilieren es Bezug zuerst (A-Projekt) und wieder Compiler wird mich auffordern, dass Fehler (wie das gleiche als wenn ich Projekt A kompilieren)
aber entweder ist es nicht wahr oder etwas ist falsch mit meinem Projekt A., weil ich zwei neue einfache Projekte von Grund auf neu starten und alles geht gut ohne Fehler (auch wenn ich ändern [Assembly:...] Anweisung auf die ungültige Assembly-Namen) ich komplett abgestürzt