我在我的 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 的不同应用程序中遇到了同样的错误,但到目前为止我还没有找到任何启发性的东西。我也尝试过关闭这个,但无济于事,除非我错过了一些东西(这很有可能)。