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

9cbw7uwe  于 2022-11-17  发布在  其他
关注(0)|答案(6)|浏览(155)

我在Visual Studio中有一个项目。我需要将一些第三方文件与我的代码沿着部署。通常我会将这些文件放在“资源”目录中,并将每个文件上的“生成操作”设置为“内容”,将“复制到输出目录”设置为“如果更新则复制”。
是否有任何方式我可以设置这些指令在文件夹级别。目前的项目,我正在与有几十个这样的文件和一对夫妇的子文件夹。我希望能够使整个目录为“内容”和“复制,如果更新”。

fdx2calv

fdx2calv1#

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

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

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

bf1o4zei

bf1o4zei2#

我使用Visual Studio 2012,您可以按住Shift键并单击以在解决方案资源管理器中选择多个项,然后在“属性”窗口中一次编辑每个项的“复制到输出目录”属性。
当然,这在功能上并不等同于您正在寻找的解决方案,但在语义上却是。希望下一个偶然发现这篇文章的人(就像我一样)不必深入研究.csproj文件。
希望这对你有帮助!

nhhxz33t

nhhxz33t3#

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

<Content ....

<None ...

这对me来说非常有效。

qcbq4gxm

qcbq4gxm4#

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

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

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

rseugnpd

rseugnpd5#

编辑 *.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>
nxowjjhe

nxowjjhe6#

如果要保留递归文件夹结构,可以添加以下XML片段:

<ItemGroup Label="bg_screens">
      <_CustomResource Include="..\..\resourcedir\**\*">
          <Link>resourcedir\%(RecursiveDir)%(FileName)%(Extension)</Link>
          <DeploymentContent>true</DeploymentContent>
      </_CustomResource>
  </ItemGroup>

资源将保持树结构,而不是以平面方式添加。

相关问题