1

Visual Studio 2008 でデータベースのセットアップ、データのインポートなどのさまざまなタスクを実行するために、TFS ビルド ファイルで次のターゲットをオーバーライドしました。マシン全体で W3SVC サービス全体を停止します (たとえば、別のタスクを参照してください)。

<Target Name="AfterCompile">

   <AppPoolController ApplicationPoolName="$(AppPoolName)" Action="Stop" ServerName="$(WebsiteMachine)" />

   <!--<MSBuild.ExtensionPack.Computer.WindowsService TaskAction="Stop" MachineName="$(WebsiteMachine)"  ServiceName="W3SVC"/>-->


   <!-- various tasks and what not, which have been confirmed to work fine with the option of stopping the W3SVC -->

   <AppPoolController ApplicationPoolName="$(AppPoolName)" Action="Start" ServerName="$(WebsiteMachine)" />
</Target>

ただし、ビルドを試みると、次のようになります。

$(BuildDirectoryPath)\BuildType\TFSBuild.proj(81,5): error : Index was outside the bounds of the array.

上記のさまざまなタスクは、タスク、他のターゲットへの呼び出しなどです。では、エラーの原因はどこにあるのでしょうか? MSBuild Community Tasks のドキュメントを読みましたが、配列に似ているものに最も近いのは、Action プロパティの Enum です。XML を使用するさまざまなアプリケーションで同じエラーが発生する人もいるようですが、これまでのところ、啓発的なものを見つけることができませんでした。私もこれをやめようとしましたが、何かを見逃していない限り(非常に可能性があります)、役に立ちませんでした。

4

1 に答える 1

0

エラーは、タスク内のコードによってスローされた例外が原因である可能性があります。範囲外のインデックスは、文字列インデックスプロパティによってスローされる可能性があります。おそらく、AppPool名が正しく取得されていません。

タスクのソースを見て、配列またはプロパティのインデックスを確認してください。

または、Execタスクを使用してにシェルアウトすることもできますiisapp.vbs

于 2009-08-22T19:11:40.153 に答える