【问题标题】:How to call second target in Msbuild如何在 Msbuild 中调用第二个目标
【发布时间】:2013-02-04 07:23:00
【问题描述】:

我需要在 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>

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

【问题讨论】:

  • 项目中找不到目标
  • 我正在使用 Visual Studio 2010 cmd,为了调用默认目标,我使用了以下代码 c:\programfiles\..\msbuild "D:\test_2\MsBuild\MsBuild\BuildScript\MsBuild .csproj"

标签: c# asp.net msbuild


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    你试过了吗

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

    ?

    【讨论】:

      【解决方案3】:

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

        <Target Name="Build">
          <CallTarget Targets="PreBuild"/>
          <CallTarget Targets="Main"/>
          <CallTarget Targets="AfterBuild"/>
        </Target>
      

      【讨论】:

        【解决方案4】:

        另一种选择是在构建文件中定义一个默认目标,然后使用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: 参数。

        【讨论】:

          猜你喜欢
          • 2010-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多