In Visual Studio, how can I set the Build Action f

2019-01-06 13:09发布

问题:

I have a project in Visual Studio. I need to deploy some 3rd party files along with my code. Typically I would put this files in a "Resources" directory and set the Build Action on each file to "Content" and the Copy To Output Directory to "Copy if newer".

Is there anyway I can set these directives at the folder level. The current project I am working with has dozens of such files and a couple of sub folders. I'd like to be able to make the entire directory as "Content" and "Copy if newer".

回答1:

Create the project. Add one file as Content. Unload the project and edit the *proj file manually.

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

And then in the content-ItemGroup I would replace that singe file with some MsBuild wildcard expression, *.dll, or whatever.



回答2:

If you happen to have the need to set the Build Action for an entire folder the best option is to just open the .csproj file and use a regex to replace all the occurences from

<Content ....

to

<None ...

That worked just perfectly for me.



回答3:

I use Visual Studio 2012 and you can shift-click to select multiple items in the Solution Explorer then edit each item's Copy To Output Directory property all at once in the Properties window.

Granted this isn't equivalent to the solution you are looking for functionally, but semantically it is. And hopefully the next person to stumble across this post with a humongous folder to remedy (as is with me) won't have to dive into the .csproj file.

Hope this helps!



回答4:

Edit your *.csproj or .vbproj file

Add this tag

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

the final file must look like this:

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