1

次のような MSBuild プロジェクトがあります。

<Target Name="StopApplications">
    <BizTalk.BuildGenerator.Tasks.StopApplication MessageBoxConnection="$(BizTalkManagementDatabaseConnectionString)" ApplicationName="x.Direct.Brackmills"/>
    <BizTalk.BuildGenerator.Tasks.StopApplication MessageBoxConnection="$(BizTalkManagementDatabaseConnectionString)" ApplicationName="x.Direct.Manhattan"/>
</Target>

<Target Name="RemoveApplications">
    <Exec Command="BTSTask RemoveApp -ApplicationName:x.Direct.Brackmills -Server:$(BizTalkDatabaseServerName) -Database:$(BizTalkManagementDatabaseName)" />
    <Exec Command="BTSTask RemoveApp -ApplicationName:x.Direct.Manhattan -Server:$(BizTalkDatabaseServerName) -Database:$(BizTalkManagementDatabaseName)" />
</Target>

私の問題は、「RemoveApplications」ターゲットを呼び出すときに、ContinueOnError が期待どおりに機能しないことです。停止して削除するアプリケーションの長いリストがあります。それらはすべて常に存在するとは限らないため、存在しないことがわかったときにスクリプトを続行する必要があります。これは「StopApplications」ターゲットの検索で機能するようですが、「RemoveApplications」ターゲットで欠落しているアプリケーションにヒットすると、次のメッセージが表示されます。

"プロジェクト "cleardownApplications.proj" の "ターゲット "RemoveApplications" のビルドが完了しました -- 失敗しました。タスク "CallTarget" の "ContinueOnError" が "true" に設定されているため、ビルドを続行します。

しかし、その後、「RemoveApplications」から脱落し、「AddApplications」に移動しました。

ありがたく受け取ったどんな助けも、

ありがとう

ロブ。

4

1 に答える 1

1

私はこれを少し別の方法で解決し、別のターゲットを使用して、アプリケーションを削除する前に存在するかどうかを確認しました。

<Target Name="ApplicationExists">
    <BizTalk2006.Application.Exists Application="$(ApplicationName)">
        <Output TaskParameter="DoesExist" PropertyName="ApplicationExists" />
    </BizTalk2006.Application.Exists>
</Target>

私はそのexists-targetを他のターゲットの「条件」として使用します。

<Target Name="DeleteApplication" Condition="$(ApplicationExists)=='True'" DependsOnTargets="ApplicationExists">
    <BizTalk2006.Application.Stop Application="$(ApplicationName)"/>
    <BizTalk2006.Application.Delete Application="$(ApplicationName)"/>
</Target>
于 2009-01-20T16:13:31.667 に答える