Wie ein nicht-starken Namen registriert Assembly geladen werden, als ob es im GAC war?

StackOverflow https://stackoverflow.com/questions/2290006

  •  21-09-2019
  •  | 
  •  

Frage

Einer unserer Partner hat uns eine Versammlung müssen wir den Zugang von unserer Anwendung. Leider ist dies nicht mit starkem Namen, so dass wir es dem GAC nicht installieren können. Und wir können es an der gleichen Stelle wie unsere ausführbare Datei nicht statt.

Gibt es eine Lösung für dieses?

EDIT: Dies wird eine temporäre Lösung für das Testen nur sein, wenn sie RC gehen, haben wir eine Assembly mit starkem Namen

.
War es hilfreich?

Lösung

Sie haben ein paar Optionen an diesem Punkt.

Die erste ist die Montage in einem Verzeichnis zu platzieren, die die Namen hat die Baugruppe (ohne die Erweiterung), die ein Unterverzeichnis des Anwendungsverzeichnis ist.

Die zweite ist das Unterverzeichnis geben Sie die CLR-Sonde für Verweise in der Datei app.config die Antastelement .

Schließlich können Sie die Baugruppe dynamisch laden die verschiedenen mit laden Methoden auf der Assembly-Klasse, aber ich würde sagen, das ist ein sehr schlechte Idee, in diesem Fall, da Sie die Baugruppe, und Sie haben konkrete Typen, dass Sie in sie verwenden möchten. Spätzeit Montage Laden wie diese ist in der Regel verwendet, wenn Sie die Anwendung bestimmter Abstraktionen subsitute wollen, was nicht der Fall scheint hier zu sein.

Andere Tipps

Behelfslösung mit Dekompilierung & Signieren (Developer Eingabeaufforderung für Visual Studio verwendet wird):

ildasm.exe /all /typelist /out=DataSystem.il DataSystem.dll
ilasm.exe /dll /optimize /key=DataSystem.snk DataSystem.il

DataSystem.snk kann als Datei mit Visual Studio IDE generiert werden http: //www.bloggedbychris. com / 2011/09/29 / Unterzeichnung-a-net-Montag-in-visual-studio /

, dann sollten Sie in der Lage zu laufen

gacutil.exe -i DataSystem.dll

Noch eine andere Lösung ist die folgende in die Datei machine.config hinzuzufügen:

<runtime>
  <developmentMode developerInstallation="true"/>  
</runtime>

Und füge DEVPATH = Pfad zu den Systemumgebungsvariablen.

Die beste und Straight-Forward-Lösung zu unterzeichnen und zu registrieren, eine Versammlung fand ich war hier: http: // codeingaddiction. blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html

Für mich ist diese zu bekommen, um ein Verzeichnis wie C leicht ich CD'd zu arbeiten. \ Temp - das schien viel besser für mich zu arbeiten, wahrscheinlich wegen der Dateiberechtigungen wie die mehr zugänglich in irgendwo zu sein

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top