在网络上发布数百个MSBuild实例,然后将其挂起

时间:2018-10-16 18:49:10

标签: visual-studio web msbuild web-deployment web-publishing

我正在使用Visual Studio 2015 Update 3,以及使用文件系统发布过程的多个Web项目解决方案。直到上周,它一直运行良好,直到上周,无论何时我尝试进行任何形式的发布-无论是解决方案的发布版本,还是手动选择项目的发布选项,MSBuild.exe都将开始运行并然后数百个文件连同conhost.exe和cmd.exe(每个文件的数量相似)接管系统。请参见下面的屏幕截图。该文件夹永远不会发布到该文件夹​​,我让它运行的最长时间约为一个小时,此后我无法取消构建并不得不重新启动。我什至尝试了Visual Studio修复,但是后来发现它发生在其他2台计算机上,但没有发生在4台计算机上。我们使用的是不同版本的操作系统(Windows 7和Windows 10),但都使用相同版本的Visual Studio。我们已经多次重启。直到10月11日(最后一个星期四),它的运行情况一直很好,从10月12日开始看到它,此后一直在与之抗争。发布过程本身未更改,任何这些Web项目的项目属性也未更改。

enter image description here

这是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>

我确实看到了类似的帖子,但是它与时区更改有关,据我所知,我们没有人进行任何此类更改。谁能提供有关如何解决此类问题的建议?

TIA

2 个答案:

答案 0 :(得分:1)

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

我要解决的问题是更改publish命令以执行此操作,其中将 / p:PostBuildEvent = 添加到现有语句中:

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

再次感谢所有关注此内容的人。希望这会在将来对其他人有所帮助。

答案 1 :(得分:-1)

  

网上发布了数百个MSBuild实例,然后挂起

根据此问题的描述。我们无法提供此问题的最直接正确答案,我们只能为您提供一些故障排除方法。为了避免在此回合中失去联系和某些信息,旅行评论,我将这些故障排除信息作为评论而不是评论。

要解决此问题,首先,我们需要缩小此问题的范围,您可以尝试创建一些新的空白项目(Web应用程序和非Web应用程序),然后检查是否仍然存在此问题,如果没有,此问题应该与项目更相关,那么您可以使用版本控制来检查导致该问题的更改。

如果此问题仍然存在于新的空白应用程序上,则此问题不应与环境设置相关。您可以进行以下设置:

  • 检查Windows更新是否导致此问题。
  • 尝试将构建选项更改为仅1个并行构建。

另请参阅:

The mystery of stuck inactive msbuild.exe processes, locked Stylecop.dll, Nuget AccessViolationException and CI builds clashing with each other

msbuild.exe staying open, locking files

希望这会有所帮助。