2009-05-23 6 views
1

J'ai cherché cela pendant longtemps et j'ai pu trouver n'importe quoi. J'ai 2 projets. L'un appelé ConsoleApp et l'autre appelé ConsoleLib. ConsoleApp fait référence à ConsoleLib. Comment puis-je dire à visual studio de copier l'assembly dans un chemin personnalisé au lieu du chemin de l'application? Ce que je veux dire est que quand je construis la solution que je veux obtenir cette structure de dossierComment compiler et déployer un assembly dans un chemin personnalisé en utilisant Visual Studio?

AppPath \ ConsoleApp.exe
AppPath \ Lib \
AppPath \ Lib \ ConsoleLib.dll

+0

Tout d'abord, je vous remercie pour les réponses. Deuxième s_ruchit j'ai déjà compris cette posibilité. J'ai lu dans Effective C# (Bill Wagner Book) que vous pouvez définir un chemin bin privé pour un assemblage. Pour que le chargeur recherche aussi ce chemin. La raison derrière vouloir déplacer l'assembly lib dans un autre répertoire est de garder les binaires mieux structurés. Ma question est de savoir comment puis-je définir le chemin privé bin d'un assemblage ou ai-je mal compris le concept? Merci d'avoir répondu à nouveau – Javier

+0

Le chemin privé que vous recherchez est l'élément de sondage auquel j'ai été associé dans ma réponse –

Répondre

2
  • Dans votre projet ConsoleApp, reportez-vous au projet ConsolLib qui recevra le fichier ConsolLib.dll dans ConsolApp \ Bin.

  • maintenant dans le projet ConsoleApp goto Postbuild commandes là, vous pouvez sepcify les opérations que vous pouvez WNAT à exécuter après la construction et là, vous pouvez l'avoir copié ConsoleApp \ Lib.

1

Vous devez utiliser une commande postbuild dans le projet d'application pour créer le répertoire lib et y copier le fichier de bibliothèque.

Si vous décidez de le faire (ce que je ne recommanderais pas, sauf si vous avez beaucoup de DLL et que vous vous sentez obligé de les organiser), vous devez également ajouter un élément de chemin de vérification à votre fichier app.config Où trouver les bibliothèques. See here.

0

Utilisez une commande Postbuild (j'utilise subdir "release" en sortie)

mkdir "$(TargetDir)release\" 
mkdir "$(TargetDir)release\bin\" 

copy "$(TargetDir)*.*" "$(TargetDir)release\" 
copy "$(TargetDir)*.dll" "$(TargetDir)release\bin\" 
copy "$(TargetDir)*.pdb" "$(TargetDir)release\bin\" 

del "$(TargetDir)release\*.pdb" 
del "$(TargetDir)release\*.dll" 
del "$(TargetDir)release\*vshost*.*" 

En app.config alors:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin"/> 
    </assemblyBinding> 
</runtime> 

Hope this helps

Questions connexes