msbuild - 如何让 MSBuild 将所有标记为 Content 的文件复制到一个文件夹中,同时保留文件夹结构?

标签 msbuild

作为我的解决方案构建的一部分,我想将所有“内容”文件(asp?x 等)复制到另一个文件夹。由于这些在项目中被如此清楚地标记,我认为必须有一种简单的方法来复制这些,而不是用 xcopy 编写我自己的构建后步骤。
不幸的是,我一直无法弄清楚这一点 - 这个 msbuild 的东西与我的大脑不兼容。
我只想要一步

但无法弄清楚要使用的语法。

Bat 文件语法建议不能回答这个问题 - 只有纯 msbuild 解决方案适用

谢谢,

最佳答案

您可以通过以下方式轻松做到这一点:

<PropertyGroup>
  <DestFolder>..\Copy\</DestFolder>
</PropertyGroup>

<Target Name="CopyContentFiles">
  <Copy SourceFiles="@(Content)"
        DestinationFiles="@(Content->'$(DestFolder)%(RelativeDir)%(Filename)%(Extension)')"/>
</Target>

如果您想将此作为构建后步骤执行,那么您只需添加 AfterTargets="Build"例如:
<PropertyGroup>
  <DestFolder>..\Copy\</DestFolder>
</PropertyGroup>

<Target Name="CopyContentFiles" AfterTargets="Build">
  <Copy SourceFiles="@(Content)"
        DestinationFiles="@(Content->'$(DestFolder)%(RelativeDir)%(Filename)%(Extension)')"/>
</Target>

关于msbuild - 如何让 MSBuild 将所有标记为 Content 的文件复制到一个文件夹中,同时保留文件夹结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643615/

相关文章:

msbuild - dotnet 发布命令未为 ASP.NET Core Web 应用程序项目创建 zip 文件包

visual-studio - 在 Web 部署之后运行部署后脚本

tfs - tfspreview 上的 tf.exe

.net-core - 使用 dotnetpublish 命令发布时无法排除 web.config 文件

tfs - 从 MSBuild 启动桌面应用程序

TFS:这可能吗?

c# - 在 VS 2012 中编译之前修改 C# 代码

asp.net - 从 VS2008 发布的等效 msbuild 命令

powershell - 如何使用PowerShell为MSBuild属性设置值

c# - 以编程方式构建 msbuild 15 项目