web-dev-qa-db-fra.com

Copier des fichiers dans le dossier de l’application lors de la compilation

Si je souhaite copier certains fichiers de mon projet dans le dossier .\bin\debug\ lors de la compilation, il me semble alors que je dois les placer à la racine du projet. Les placer dans un sous-dossier semble les copier dans le dossier .\bin\debug\ dans la même structure que celle dans laquelle ils sont stockés.

Y-a-t-il un moyen d'éviter ça?

Soyons clairs: si j’ai un MyFirstConfigFile.txt et un MySecondConfigFile.txt dans un dossier ConfigFiles et que je règle leur Copier en sortie soit Copier ... , ils apparaissent dans le dossier .\bin\debug\ConfigFiles\. Je veux qu'ils apparaissent dans le dossier .\bin\debug\.

73
Andrew Ducker

Vous pouvez le faire avec un événement post-build. Définissez les fichiers sur aucune action lors de la compilation, puis copiez-les dans la macro dans le répertoire souhaité.

Voici une macro post-compilation qui fonctionnera, selon moi, en copiant tous les fichiers d'un répertoire appelé Configuration dans le dossier racine de la compilation:

copy $(ProjectDir)Configuration\* $(ProjectDir)$(OutDir)
75
JoshBerke

Vous pouvez utiliser une tâche MSBuild sur votre csproj, comme ça.

Editez votre fichier csproj

  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)yourfiles" DestinationFolder="$(YourVariable)" ContinueOnError="true" />
  </Target>

Vous pouvez également placer les fichiers ou les liens à la racine de l'explorateur de la solution, puis définir les propriétés du fichier:

Build action = Content

et 

Copy to Output Directory = Copy if newer (par exemple)

Pour un lien, faites glisser le fichier de l'explorateur Windows dans l'explorateur de solutions en maintenant les touches Maj et Contrôle enfoncées.

 enter image description here

29
Georg

Vous souhaitez utiliser un événement post-build sur votre projet. Vous pouvez spécifier la sortie ici et il existe des valeurs de macro pour les éléments fréquemment utilisés tels que le chemin du projet, le nom de l'élément, etc.

1
Mark Sherretta

J'ai trouvé cette question en cherchant "copier des fichiers dans le dossier de l'application au moment de la compilation". OP semble avoir déjà réglé ce problème, mais si vous ne le faites pas:

Dans Visual Studio, cliquez avec le bouton droit de la souris sur le fichier, sélectionnez Propriétés, puis modifiez l'option 'Copier vers la sortie' en 'Toujours'. Voir http://msdn.Microsoft.com/en-us/library/0c6xyb66.aspx

1
Colonel Panic

copier d'un sous-dossier à un autre

 if not exist "$(ProjectDir)$(OutDir)subfolder" mkdir "$(ProjectDir)$(OutDir)subfolder"

 copy "$(ProjectDir)subfolder\"  "$(ProjectDir)$(OutDir)subfolder\"
0
Ehsäɳ Khʌɳ

Vous pouvez utiliser l'événement PostBuild du projet. Une fois la construction terminée, vous pouvez exécuter un fichier de commandes DOS et copier les fichiers souhaités dans le dossier souhaité.

0
Kirtan