我在Visual Studio中有一个项目。我需要部署一些第三方文件和我的代码。通常我会将这些文件放在“Resources”目录中,并将每个文件的Build Action设置为“Content”,将Copy To Output Directory设置为“Copy if newer”。
无论如何,我可以在文件夹级别设置这些指令。我正在使用的当前项目有几十个这样的文件和几个子文件夹。我希望能够将整个目录设为“内容”和“如果更新则复制”。
答案 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通配符过滤器会带来这种额外的复杂性。