質問

MSBuildコマンドラインから呼び出されるTARGET(/ t)の名前を取得する方法を知っている人はいますか?呼び出すことができるターゲットにはいくつかの種類があり、ユーザーへの通知にそのプロパティを使用します。

例:

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV

.Projファイル内のターゲットワード ApplicationDeployment にアクセスしたい。

アクセスできるプロパティはありますか?これを行う方法の手がかりはありますか?

編集:これを取得するためにプロパティを渡す必要もありません。

更新:これは、MSBuildスクリプトを使用した展開スクリプトに基づいています。ビルドサーバーは、コードのデプロイには使用されず、ビルドにのみ使用されます。ビルドサーバー自体には、オプトインできるビルド通知があります。

役に立ちましたか?

解決 2

答えが見つかりました!

<Target Name="ApplicationDeployment" >
    <CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
      <Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
    </CreateProperty>

私は無関心な人に部分的な評価をしたいと思います。方法がわからない。

他のヒント

あなたが尋ねるとおりに正確に行う方法がわかりませんが、/ pオプションを使用してその文字列を渡すことができますか?

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment

他の唯一の方法は、各ターゲットで条件付きプロパティを使用して、最初のターゲットを起動することです。

<Target Name="ApplicationDeployment">
<PropertyGroup>
  <InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>

...
</Target>

これを行う方法はありません(私は承知しています)。 MSBuildには、ビルドを要求されたターゲットのリストのプロパティがありません。

ただし、方法を見つけた場合、それは単一のターゲットではなく、ビルドするターゲットのリストである可能性があることに注意してください。

CCNETなどのサーバーを使用して、ビルドの実行と通知を処理することをお勧めします。確かに、MSBuildスクリプトに対して通知を送信することはできますが、そのドメインはビルドサーバーに属します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top