Come registrare un assembly non con nome sicuro per essere caricato come se fosse nella GAC?

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

  •  21-09-2019
  •  | 
  •  

Domanda

Uno dei nostri partner ci ha fornito un assemblaggio abbiamo bisogno di accedere dalla nostra applicazione. Purtroppo, questo non è forte-nome per cui non possiamo installarlo al GAC. E non possiamo metterlo nello stesso luogo come il nostro eseguibile.

C'è una soluzione per questo?

EDIT:. Questa sarà una soluzione temporanea solo per il test, quando vanno RC, avremo un assembly con nome

È stato utile?

Soluzione

Hai alcune opzioni in quel punto.

Il primo è quello di posizionare il gruppo in una directory che ha il nome del gruppo (senza l'estensione) che è una sottodirectory della directory dell'applicazione .

Il secondo è quello di specificare la directory sub si desidera che il CLR per sondare i riferimenti nel file app.config utilizzando il sondare elemento .

Infine, è possibile caricare l'assembly utilizzando dinamicamente i vari carico metodi sulla classe assembly ma direi che è un molto cattiva idea, in questo caso, dato che si dispone il gruppo, e si dispone di tipi concreti che si desidera utilizzare in esso. carico di assemblaggio tempo ritardo come questo è in genere utilizzato quando si vuole subsitute l'attuazione di certe astrazioni, che non sembra essere il caso qui.

Altri suggerimenti

Per risolvere il problema utilizzando la decompilazione e la firma (utilizzando prompt dei comandi Developer per Visual Studio):

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

DataSystem.snk può essere generato da un file utilizzando Visual Studio IDE http: //www.bloggedbychris. com / 2011/09/29 / firma-a-net-assemblaggio-in-visual-studio /

allora si dovrebbe essere in grado di eseguire

gacutil.exe -i DataSystem.dll

Ancora un'altra soluzione è quella di aggiungere il seguente al file machine.config:

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

E aggiungere DEVPATH = percorso per le variabili di ambiente di sistema.

La soluzione migliore e più straight-forward a firmare e registrare un assembly che ho trovato era qui: http: // codeingaddiction. blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html

Per me arrivare a questo lavoro facilmente ho CD'd in una directory come C: \ temp - questo sembrava funzionare molto meglio per me, probabilmente a causa dei permessi dei file essere più accessibile in un posto del genere

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top