2010-08-24 3 views
1

J'ai un projet sur lequel je travaille qui fait référence à une "bibliothèque commune (DLL)". Dans le DevEnv cela fonctionne très bien, mais si je construis et essaye d'organiser mes fichiers cela ne fonctionne pas. En gros, si j'ai des choses configuration comme ceci:Visual Studio: emplacements DLL pour la publication

  • C: \ Program Files \ MyApp \ MyApp.exe
  • C: \ Program Files \ MyApp \ Common \ WPF Commons.dll
  • C: \ Program Files \ MyApp \ Modules \ SomeModule.dll
  • etc

MyApp.exe ne fonctionne pas. Il essaie de rechercher uniquement dans le répertoire en cours pour les fichiers DLL. Comment puis-je le configurer dans Visual Studio de sorte que lorsque je compile l'application sait rechercher les DLL dans ces autres dossiers? Oh, et je me rends compte que cela fonctionne dans Dev, car toutes les DLL sont placées dans le même dossier. Je ne veux pas faire cela pour la libération si: -/

Répondre

3

Ce que vous devez faire est d'ajouter un chemin de sondage privé dans le fichier de configuration de l'application. Cela indique au CLR quels répertoires rechercher des assemblages supplémentaires.

Exemple app.config

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="Common;Modules"/> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
+0

Y at-il une solution de rechange en dehors de la copie du fichier MyApp.exe.config (qui peut être ouvert et modifié après le fait facilement) ? –

+0

@myermian vous pouvez remplacer l'événement de résolution d'assembly pour effectuer une résolution personnalisée. Cependant personnellement j'irais avec le app.config un. app.config est * signifié * pour être édité après coup afin de permettre aux administrateurs de nettoyer les problèmes de liaison et de déploiement. C'est une pratique courante de l'utiliser pour explorer les chemins (Visual Studio le fait en fait). – JaredPar

Questions connexes