Visual studio 在Visual Studio中,如何设置整个文件夹的生成操作?

Visual studio 在Visual Studio中,如何设置整个文件夹的生成操作?,visual-studio,Visual Studio,我在Visual Studio中有一个项目。我需要在我的代码中部署一些第三方文件。通常,我会将这些文件放在“Resources”目录中,并将每个文件上的构建操作设置为“Content”,将Copy to Output目录设置为“Copy if newer” 我是否可以在文件夹级别设置这些指令。我正在处理的当前项目有几十个这样的文件和几个子文件夹。我想能够使整个目录为“内容”和“复制,如果更新” 创建项目。添加一个文件作为内容。卸载项目并手动编辑*proj文件 <ItemGroup>

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


我是否可以在文件夹级别设置这些指令。我正在处理的当前项目有几十个这样的文件和几个子文件夹。我想能够使整个目录为“内容”和“复制,如果更新”

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

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

保存最新

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

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

<Content ....

编辑*.csproj或.vbproj文件

添加此标签

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


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

当然,这在功能上并不等同于您正在寻找的解决方案,但在语义上却是如此。希望下一个偶然发现这篇文章的人(和我一样)不必深入到.csproj文件中去,因为他有一个巨大的文件夹需要修复


希望这有帮助

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


保存最新

我知道这个答案类似于@Arve,但我不知道为什么.dll通配符过滤器会如此复杂。

发现这有助于构建我的通配符语句:我尝试了这个。它确实可以工作,但当我使用VisualStudio添加一个项目时,它删除了通配符并将所有单个项目更改回。我也尝试过这个建议。但这根本不起作用。这个通配符语句对我来说可以复制所有文件和子目录:PreserveNewst@Arve这是gem bro,正在努力,但在24小时后找到了你的答案这确实是一个更好的解决方案hmm,但如果你能在某个地方使用工具>选项来设置它,会不会更符合逻辑?默认情况下,添加到项目中的每一项新资产都会被排除在外,这非常令人恼火。(如果我不想在最终构建中包含资产,为什么还要添加资产?)我的用例是我必须从发布中排除项目根目录中的giant(100MB)/public/目录(因为我复制了一次,它不会改变)。然而,我确实希望将它包括在我的项目中,从而包括在源代码管理中。这个解决方案在这方面非常有效。我没有使用正则表达式,只是使用了replace-all。尝试了这个,但没有效果。我想在部署项目时向项目中添加一个空文件夹。这没用。
  <ItemGroup>
    <Folder Include="YOUR_FOLDER_NAME_HERE/">
  </ItemGroup
<Project>
<---some more tags--->
      <ItemGroup>
        <Folder Include="YOUR_FOLDER_NAME_HERE\" />
      </ItemGroup
<---some more tags--->
</Project>
<ItemGroup>
    <Content Include="MYCUSTOMFOLDER\**">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>