3

我的 csproj 中有一个 MSBuild 目标,用于在构建后将我的 Web 应用程序的文件和文件夹复制到目标路径。

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
...

如果我通过命令行使用目标“PublishToFileSystem”调用 MSBuild,一切正常。

但现在我想“使用”这个目标也用于 Visual Studio 中的特殊配置(如发布、调试......)。

如何将配置分配给另一个目标,而不是使用 DefaultTargets 在项目中设置的 DefaultTarget“构建”:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

谢谢,康拉德

4

3 回答 3

4

尝试使用 AfterBuild 目标而不是 PublishToFileSystem:

<Target Name="AfterBuild" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">

或检查MSDN 上的 Overriding Predefined Targets

于 2011-12-21T15:21:35.813 回答
1

如果您想针对特定的解决方案配置执行此操作,并且像我一样遭受 ciruclar 依赖项的困扰,那么我能想到的最简单的方法就是编写您自己的 Target 以用作默认目标。该目标根据配置条件启动其他目标。

<Target Name="CustomBuild">
  <CallTarget Targets="SignAndroidPackage" Condition="'$(Configuration)' == 'UITest'"/>
  <CallTarget Targets="Build" Condition="'$(Configuration)' != 'UITest'"/>
</Target>

然后只需将项目定义顶部的 Default 目标更改为该 CustomBuild 目标。

<Project DefaultTargets="CustomBuild" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
于 2017-03-02T14:06:35.770 回答
0

这是一种可能适合您需要的方法: 从 VisualStudio 运行自定义 msbuild 目标

(这是MSBuild Trickery一书中的技巧 #78 )

于 2011-12-21T15:26:26.683 回答