web-dev-qa-db-fra.com

VS2010 Comment inclure des fichiers dans un projet, les copier pour créer automatiquement un répertoire de sortie pendant la construction ou la publication

La tâche consiste à former le projet Visual Studio 2010 afin que, lors de toute génération ou publication, un utilitaire foo.exe soit copié dans le répertoire de sortie (bin). 

Au début, j'ai créé la tâche PostBuildEvent dans .csproj (fichier MSBuild):

<PropertyGroup>
  <PostBuildEvent>
    Copy "$(SolutionDir)Tools\foo.exe" "$(ProjectDir)$(OutDir)foo.exe"
  </PostBuildEvent>
</PropertyGroup>

Mais ce n'est pas universel. Pendant la publication (Visual Studio 2010), foo.exe apparaît dans le répertoire bin, mais n'est pas copié dans le répertoire de publication de sortie. Peut-être que je fais tout à fait faux et qu'il existe un mécanisme standard pour inclure des fichiers dans des projets afin qu'ils soient ultérieurs, pendant la construction ou la publication, copiés dans bin?

64
Dao

Il y a et cela ne dépend pas des événements post-build.

Ajoutez le fichier à votre projet, puis dans les propriétés file, sélectionnez "Copier dans le répertoire de sortie" ou "Copier toujours" ou "Copier si plus récent".

Voir MSDN .

99
Oded

Je n'ai besoin que de fichiers Push lors de la construction, alors je viens d'ajouter une entrée de ligne de commande d'événement post-construction comme celle-ci:

Copy /Y "$(SolutionDir)Third Party\SomeLibrary\*" "$(TargetDir)"

Vous pouvez définir cela en cliquant avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions, puis sur Propriétés> Événements de construction.

17
Matthew Piatt

Dans l'Explorateur de solutions, sélectionnez les fichiers que vous souhaitez copier dans le répertoire de sortie et attribuez deux propriétés:

Ça fera l'affaire.

4
user3110417
  1. Ajoutez le fichier à votre projet.
  2. Accédez aux propriétés de ce fichier.
  3. Définissez "Action de construction" sur Ressource incorporée.
  4. Définissez "Copier dans le répertoire de sortie" sur Copier toujours.
3
5ervant

Essayez d'ajouter une référence aux dll manquantes à partir de votre service/projet web directement . L'ajout de références à un projet différent n'a pas fonctionné pour moi. 

Je n'avais qu'à faire cela lors de la publication de mon application Web, car elle ne copiait pas toutes les dll requises.

0
goku_da_master

Juste pour que mes camarades atteints de troubles neuronaux puissent s'y retrouver ici, j'avais supposé que, pour les projets Web, si le fichier lié était un fichier .config externe, le "répertoire de sortie" serait le même répertoire que celui utilisé par web.config, c'est-à-dire la racine de votre projet web. Rétrospectivement, il n’est pas surprenant que le fichier lié soit copié dans le dossier racine/bin. 

Donc, s'il s'agit d'un fichier d'inclusion appSettings, la balise ouverte de votre web.config serait 

<appSettings file=".\bin\includedAppSettingsFile.config">

Duh.

0

Dans mon cas, définir Copy to Output Directory sur Copy Always et Build n'a pas suffi, contrairement à Rebuild. 

J'espère que cela aide quelqu'un!

0
Joel