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

时间:2010-01-13 19:25:17

标签: visual-studio

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

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

5 个答案:

答案 0 :(得分:53)

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

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

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

答案 1 :(得分:8)

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

虽然这并不等同于您正在寻找功能上的解决方案,但在语义上却是如此。并希望下一个发现这个帖子的人有一个非常糟糕的文件夹来补救(就像我一样)不会潜入.csproj文件。

希望这有帮助!

答案 2 :(得分:7)

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

<Content ....

<None ...

这对me非常有用。

答案 3 :(得分:1)

编辑* .csproj或.vbproj文件

添加此标记

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

最终文件必须如下所示:

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

答案 4 :(得分:0)

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

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

我知道这个答案与@Arve类似,但是我不知道为什么使用.dll通配符过滤器会带来这种额外的复杂性。