Web 上的数百个 MSBuild 实例发布,然后挂起

Hundreds of MSBuild instances on web publish, then hangs

我正在使用 Visual Studio 2015 Update 3,其中有几个使用文件系统发布过程的 Web 项目解决方案。这在上周之前一直运行良好,每当我尝试任何类型的发布时 - 无论是解决方案的发布版本,还是手动选择项目的发布选项,MSBuild.exe 都会开始运行ning 然后数百人接管了系统以及 conhost.exe 和 cmd.exe(每个数量相似)。请参见下面的屏幕截图。该文件夹永远不会发布到,我让它 运行 的最长时间大约是一个小时,之后我无法取消构建并不得不重新启动。我什至尝试了 Visual Studio 修复,但后来我发现它发生在另外 2 台机器上,但不是在第 4 台机器上。我们使用不同的 OS' 版本(Windows 7 & Windows 10),但都使用相同版本的 Visual Studio。我们都重新启动了很多次。就在 10 月 11 日(上周四),它运行良好,从 10 月 12 日开始看到它,从那以后一直在与它作斗争。发布过程本身没有改变,这些 Web 项目的项目属性也没有改变。

下面是其中一个 pubxml 的样子:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>$(MSBuildThisFileDirectory)..\..\PublishWebServiceToFileSystem</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

我确实看到了类似的 post,但它与时区更改有关,据我所知,我们 none 中的任何人都进行过此类更改。任何人都可以提供有关如何解决此类问题的建议吗?

TIA

我相信这个问题现在已经解决,并且与在 PostBuildEvent 中使用 SignTool 有关。因为我们的自动构建过程需要发布,所以在 dll 签名之后,我们还在同一个 PostBuildEvent 中进行了 msbuild 发布调用。我们认为发生的事情是在发布期间,它会看到 post 构建事件并尝试签署一个已经签署的 dll。我不是 100% 确定那是问题所在,但删除签名会停止该行为,将其放回原位会恢复该行为,因此证据指向那个方向。

我解决这个问题的方法是更改​​发布命令来执行此操作,其中 /p:PostBuildEvent= 已添加到现有语句中:

if $(ConfigurationName) == Release ("$(MSBuildBinPath)\msbuild.exe" 
"$(ProjectPath)" /p:Configuration=Release /p:DeployOnBuild=true 
/p:PublishProfile=PublishWebSiteToFileSystem /p:VisualStudioVersion=14.0 
/p:PostBuildEvent=)

再次感谢所有看过这篇文章的人。希望这对以后的其他人有所帮助。