1

我在我的 TFS 构建文件中覆盖了以下目标,以在 Visual Studio 2008 中运行设置数据库、导入数据等的各种任务 - 目的是仅停止与服务器上的应用程序池关联的网站,而不是停止停止整个机器上的整个 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 回答