Hoe kan ik in Visual Studio de Build-actie voor een hele map instellen?

Ik heb een project in Visual Studio. Ik moet een aantal bestanden van derden samen met mijn code implementeren. Normaal gesproken zou ik deze bestanden in een map “Resources” plaatsen en de Build-actie voor elk bestand instellen op “Content” en de Copy To Output Directory op “Copy if newer”.

Is er hoe dan ook dat ik deze richtlijnen op mapniveau kan instellen. Het huidige project waar ik mee werk heeft tientallen van dergelijke bestanden en een aantal submappen. Ik zou graag in staat zijn om de hele map te maken als “Inhoud” en “Kopiëren indien nieuwer”.


Antwoord 1, autoriteit 100%

Maak het project. Voeg één bestand toe als Inhoud. Verwijder het project en bewerk het *proj-bestand handmatig.

<ItemGroup>
    <Content Include="myfolder**\*.dll**">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

En dan zou ik in de content-ItemGroup dat enkelvoudige bestand vervangen door een MsBuild-jokertekenexpressie, *.dll of wat dan ook.


Antwoord 2, autoriteit 11%

Ik gebruik Visual Studio 2012 en je kunt shift-klikken om meerdere items in de Solution Explorer te selecteren en vervolgens de eigenschap Copy To Output Directory van elk item in één keer in het venster Eigenschappen bewerken.

Toegegeven, dit is functioneel gezien niet gelijk aan de oplossing die u zoekt, maar semantisch wel. En hopelijk hoeft de volgende persoon die dit bericht tegenkomt met een gigantische map om te verhelpen (zoals bij mij het geval is), niet in het .csproj-bestand te duiken.

Hopelijk helpt dit!


Antwoord 3, autoriteit 9%

Als u de Build Actionvoor een hele map moet instellen, kunt u het beste gewoon het bestand .csprojopenen en een regex gebruiken om te vervangen alle voorvallen van

<Content ....

naar

<None ...

Dat werkte gewoon perfect voor mij.


Antwoord 4, autoriteit 4%

Ik heb dit zojuist toegevoegd aan mijn *.csproj-bestand (klik met de rechtermuisknop op Projectbestand bewerken)

<ItemGroup>
    <Content Include="MYCUSTOMFOLDER\**">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

Ik weet dat dit antwoord vergelijkbaar is met @Arve, maar ik weet niet waarom deze extra complexiteit met het .dll-wildcardfilter.


Antwoord 5

Bewerk uw *.csproj- of .vbproj-bestand

Deze tag toevoegen

 <ItemGroup>
    <Folder Include="YOUR_FOLDER_NAME_HERE/">
  </ItemGroup

het uiteindelijke bestand moet er als volgt uitzien:

<Project>
<---some more tags--->
      <ItemGroup>
        <Folder Include="YOUR_FOLDER_NAME_HERE\" />
      </ItemGroup
<---some more tags--->
</Project>

Other episodes