3

msbuild で 2 番目のターゲットを呼び出す必要がありますが、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>

最初のターゲットは正常に呼び出されましたが、2 番目のターゲットをロードできません...どうすれば可能ですか?

4

4 に答える 4

7

定義していないため、デフォルトのターゲットはファイル内の最初のターゲットである FirstTarget です。コマンド ラインから 2 番目のターゲットを呼び出すには、 で明示的に呼び出す必要があります/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 に答える
2

もう1つのオプションは、ビルドファイルでデフォルトのターゲットを定義し、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 に答える