87 votes

Copier dans le répertoire de sortie copie la structure du dossier mais souhaite uniquement copier des fichiers

J'ai un VS2008 je veux copier certains fichiers d'un répertoire dans mon /bin/ le dossier. J'ai mis les fichiers (situé en /common/browserhawk/) à "Copier dans le Répertoire de Sortie". Cependant, il copie la structure de dossier: les fichiers sont copiés à l' /bin/common/browserhawk/

Comment puis-je obtenir ces fichiers à copier juste /bin/? Je ne veux pas stocker ces informations dans la racine du site web pour obtenir de recopier correctement.

Question connexe: http://stackoverflow.com/questions/1013419/visual-studio-adds-dll-and-pdb-to-project-after-compiling/1013561

59voto

Bill A. Points 374

Vous pouvez ajouter un événement post-construction pour copier les fichiers. Allez dans les propriétés du projet, dans l'onglet Événements de construction et ajoutez les éléments suivants à la ligne de commande de l'événement post-construction:

copiez "$ (Rép_Projet) \ common \ browserhawk *. *" "$ (Rép. Cible)"

Veillez à inclure les guillemets si votre chemin de projet contient des espaces.

46voto

shockwave Points 436

Depuis que je ne peut pas commenter les réponses précédentes, je vais mettre la solution ici:

En ajoutant à ce que @PaulAlexander fourni, ajoutez les lignes suivantes à votre .csproj/.fichier vbproj:

<ItemGroup>
    <AvailableItemName Include="RootContent">
      <Visible>false</Visible>
    </AvailableItemName>  
</ItemGroup>
<Target Name="AfterBuild">
    <Copy
        DestinationFolder="$(OutputPath)"
        SourceFiles="@(RootContent)"
        SkipUnchangedFiles="true"
        />  
</Target>

Cela vous permet de sélectionner "RootContent" comme l'Action de Construire dans la fenêtre Propriétés, et tous peuvent être accessibles via l'interface graphique. Une explication plus complète: "AvailableItemName" option fondamentalement crée une nouvelle liste que vous pouvez affecter des éléments du projet en vertu de la "Construire l'Action" propriété dans la fenêtre Propriétés. Vous pouvez ensuite utiliser cette liste nouvellement créée dans toute Cible que vous souhaitez (par exemple via "@(RootContent)").

44voto

Daniel Yankowsky Points 3719

Si vous modifiez le fichier .csproj / .vbproj dans un éditeur de texte, vous pouvez contrôler l'emplacement du fichier dans le répertoire de sortie, ainsi que le nom du fichier dans le répertoire de sortie. Par exemple:

 <None Include="content\someContent.txt">
  <Link>someContentInOutputDirectory.txt</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
 

Cela mettra le fichier content\someContent.txt dans bin\someContentInOutputDirectory.txt . Vous pouvez également choisir un sous-répertoire dans bin si vous le souhaitez. ajoutez-le simplement à l'élément Link.

15voto

AMissico Points 12837

Je crois que la commande XCOPY gère mieux les répertoires et les fichiers. Donc,

     XCOPY "$(ProjectDir)common/browserhawk" "$(TargetDir)" /E /I /F /Y
 

Ce qui permet de créer des dossiers à partir du répertoire cible.

     XCOPY "$(ProjectDir)Templates" "$(TargetDir)" /E /I /F /Y
 

La structure de dossier / fichier de projet de:

     A:\TEMP\CONSOLEAPPLICATION3\TEMPLATES
    ├───NewFolder1
    ├───NewFolder2
    │       TextFile1.txt
    │       TextFile2.txt
    └───NewFolder3
            TextFile1.txt
            TextFile2.txt
            TextFile3.txt
 

Devient:

     A:\TEMP\CONSOLEAPPLICATION3\BIN\DEBUG
    │   ConsoleApplication3.exe
    │   ConsoleApplication3.pdb
    │   ConsoleApplication3.vshost.exe
    │   ConsoleApplication3.vshost.exe.manifest
    ├───NewFolder1
    ├───NewFolder2
    │       TextFile1.txt
    │       TextFile2.txt
    │
    └───NewFolder3
            TextFile1.txt
            TextFile2.txt
            TextFile3.txt
 

10voto

Paul Alexander Points 17611

Ajoutez ce qui suit à votre fichier .csproj / .vbproj

 <Target Name="AfterBuild">
    <Copy
        DestinationFolder="$(OutputPath)"
        SourceFiles="@(RootContent)"
        SkipUnchangedFiles="true"
        />  
</Target>
 

Ensuite, modifiez l'action de construction de tous les fichiers de votre choix dans le dossier racine en RootContent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X