在Visual Studio中,如何为整个文件夹设置"构建操作"?

bre*_*dan 56 visual-studio

我在Visual Studio中有一个项目.我需要部署一些第三方文件和我的代码.通常我会将这些文件放在"Resources"目录中,并将每个文件的Build Action设置为"Content",将Copy To Output Directory设置为"Copy if newer".

无论如何我可以在文件夹级别设置这些指令.我正在使用的当前项目有几十个这样的文件和几个子文件夹.我希望能够将整个目录设为"内容"和"如果更新则复制".

Arv*_*rve 59

创建项目.添加一个文件作为内容.卸载项目并手动编辑*proj文件.

 <ItemGroup>
    <Content Include="myfolder**\*.dll**">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

然后在content-ItemGroup中,我将用一些MsBuild通配符表达式*.dll或其他任何东西替换该单个文件.

  • 这个通配符语句可以复制所有文件和子目录:<Content Include ="`MyFolder \\**\*.*`"> <CopyToOutputDirectory> PreserveNewest </ CopyToOutputDirectory> </ Content> (7认同)
  • 发现这有助于构建我的通配符语句:http://msdn.microsoft.com/en-us/library/ms171454%28VS.80%29.aspx (2认同)

Fre*_*076 9

我使用Visual Studio 2012,您可以在解决方案资源管理器中按住Shift键单击以选择多个项目,然后在"属性"窗口中一次编辑每个项目的"复制到输出目录"属性.

当然,这并不等同于您在功能上寻找的解决方案,但在语义上却是如此.并希望下一个发现这个帖子的人有一个庞大的文件夹来补救(就像我一样)将不必深入到.csproj文件中.

希望这可以帮助!


Jur*_*uri 7

如果您碰巧需要为整个文件夹设置构建操作,最好的选择是打开.csproj文件并使用正则表达式替换所有出现的文件

<Content ....
Run Code Online (Sandbox Code Playgroud)

<None ...
Run Code Online (Sandbox Code Playgroud)

这对我来说非常合适.

  • 我认为你解决的是一个不同的问题. (5认同)

Cod*_*ife 7

我刚刚将其添加到我的 *.csproj 文件中(右键单击“编辑项目文件”)

<ItemGroup>
    <Content Include="MYCUSTOMFOLDER\**">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我知道这个答案类似于@Arve,但我不知道为什么 .dll 通配符过滤器会产生额外的复杂性。