3

我需要在 msbuild 中调用第二个目标,但是当我在 cmd 中调用它时,它显示错误,我的代码如下所示

MsBuild.csproj

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <alen>123456</alen>
  </PropertyGroup>

  <Target Name="FirstTarget">
    <Message Text="Hello World $(alen)" />
  </Target>
  <Target Name="SecondTarget">
    <Message Text="The second target" />
  </Target>


</Project>

第一个目标调用成功,但我无法加载第二个目标...怎么可能???

4

4 回答 4

7

由于您尚未定义它,因此默认目标是文件中的第一个目标,FirstTarget。要从命令行调用第二个目标,您需要使用 . 显式调用它/t:SecondTarget/t:FirstTarget;SecondTarget如果你想同时运行,你可以使用。

您还可以将 SecondTarget 定义为始终位于第一个目标之后。像这样使用AfterTargets属性:

  <Target Name="SecondTarget" AfterTargets="FirstTarget">

现在msbuild msbuild.proj将调用两个目标。

于 2013-02-04T07:43:58.060 回答
3

你有没有尝试过

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe "D:\test_2\MsBuild\MsBuild\BuildScript\MsBuild.csproj" /t:SecondTarget

?

于 2013-02-04T07:36:29.033 回答
3

我知道这是一篇很老的帖子,但您也可以让一个目标调用其他目标。

  <Target Name="Build">
    <CallTarget Targets="PreBuild"/>
    <CallTarget Targets="Main"/>
    <CallTarget Targets="AfterBuild"/>
  </Target>
于 2019-04-08T22:08:38.173 回答
2

另一种选择是在构建文件中定义默认目标,然后使用以下命令定义目标的顺序DependsOnTargets

<Project DefaultTargets="DefaultTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<Target Name="DefaultTarget" DependsOnTargets="FirstTarget;SecondTarget">
  <Message Text="Executing DefaultTarget" />
</Target>

<!--  your targets -->

</Project>

中定义的目标DependsOnTargets将在目标本身运行之前运行。这样做,您不需要/t:在调用中设置参数。

于 2013-02-04T08:09:42.370 回答