web-dev-qa-db-fra.com

Comment enregistrer des DLL dans un autre dossier lors de la compilation dans Visual Studio?

Supposons que j'ai Window Forms/Application Console C # projet avec quelques références externes et des références à d'autres projets de bibliothèques de classes dans la même solution.

Lorsque je crée le projet Window Form, Je souhaite que les bibliothèques référencées soient stockées dans un emplacement différent (par exemple: bin\Release\Libraries), et non dans le même dossier que le fichier .exe .

Est-il possible de faire?

28
Oscar Mederos

Il y a 2 parties de votre question:

Comment configurer des solutions pour construire des assemblys/EXE dans les dossiers de votre choix - ceci est configuré via les propriétés du projet dans VS (propriétés du projet -> build -> chemin de sortie). Également la valeur de la propriété check "copy local" sur chaque référence.

Comment charger des fichiers d'assemblages à partir d'emplacements non définis par défaut (c.-à-d. À partir de votre dossier ...\Libraries) - vous devez modifier votre fichier app.config pour ajouter ce chemin d'accès non défini par défaut à l'emplacement de recherche de l'Assemblée ( /support.Microsoft.com/kb/837908 ).

15
Alexei Levenkov

Les réponses correctes ont été données plus tôt. Je mentionnerai simplement qu’il existe un paquet de pépites pour cela appelé PrettyBin

Installez-le sur votre projet de démarrage. Les DLL et les XML iront dans un dossier lib et vous aurez un exemple de travail montrant comment faire, si vous ne souhaitez pas personnaliser.

6
aershov

Définissez le chemin de référence dans les ressources du projet.

Vous pouvez également spécifier où va votre exe compilé en spécifiant le chemin de sortie dans les propriétés du projet.

2
ukhardy

Vous trouverez les meilleures pratiques pour organiser les références de projet ici: http://codebetter.com/patricksmacchia/2009/01/11/lessons-learned-from-the-nunit-code-base/

Consultez le chapitre "L'option Référence de projet VisualStudio + Copie locale vraie est perverse!"

1
Petar Repac

Oui, c'est possible, vous le feriez dans votre script msbuild. Bien que je ne puisse pas vous donner une réponse exacte, regardez ici la question sur SO Copier tous les fichiers et dossiers à l'aide de msbuild

0
Doug Chamberlain