Comment enregistrer un nom assemblage non-forte à charger comme si elle était dans le GAC?

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

  •  21-09-2019
  •  | 
  •  

Question

L'un de nos partenaires nous ont fourni un ensemble nous avons besoin d'accéder à partir de notre application. Malheureusement, ce n'est pas de nom fort pour que nous ne pouvons pas l'installer dans le GAC. Et nous ne pouvons le placer dans le même endroit que notre exécutable.

Y at-il une solution pour cela?

EDIT:. Ce sera une solution temporaire uniquement pour les tests, quand ils vont RC, nous aurons une assemblée nom fort

Était-ce utile?

La solution

Vous avez quelques options à ce moment-là.

La première consiste à placer l'ensemble dans un répertoire qui porte le nom du .

La seconde est de spécifier le sous-répertoire que vous voulez que le CLR à la sonde pour les références dans le fichier app.config en utilisant le élément de palpage .

Enfin, vous pouvez charger l'assembly dynamiquement en utilisant les différents charge méthodes de la classe de l'Assemblée mais je dirais que c'est un très mauvaise idée dans ce cas, étant donné que vous avez l'assemblée, et vous avez des types concrets que vous souhaitez utiliser en elle. Temps de montage fin de chargement comme celui-ci est généralement utilisé lorsque vous souhaitez subsitute la mise en œuvre de certaines abstractions, ce qui ne semble pas être le cas ici.

Autres conseils

Solution à l'aide décompilation et la signature (en utilisant l'invite de commandes Developer pour Visual Studio):

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

DataSystem.snk peut être généré sous la forme d'un fichier en utilisant Visual Studio IDE http: //www.bloggedbychris. com / 2011/09/29 / signature-a-filet-montage en studio visuel /

alors vous devriez être en mesure d'exécuter

gacutil.exe -i DataSystem.dll

Une autre solution consiste à ajouter ce qui suit au fichier machine.config:

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

Et ajoutez DEVPATH = chemin aux variables d'environnement système.

La meilleure solution et la plus simple pour signer et enregistrer un ensemble que j'ai trouvé ici: http: // codeingaddiction. blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html

Pour moi, pour que cela fonctionne facilement je CD'd à un répertoire comme C: \ temp - cela semble fonctionner beaucoup mieux pour moi, probablement à cause des autorisations de fichier étant plus accessible dans un endroit comme ça

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top