Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么msbuild和link.exe是;悬挂;在构建过程中? 我们有几个C++解决方案,我们使用批处理文件运行一些构建脚本,这些解决方案中的每个配置都调用MSBuudioEXE。_C++_Visual Studio_Msbuild_Batch File_Linker - Fatal编程技术网

为什么msbuild和link.exe是;悬挂;在构建过程中? 我们有几个C++解决方案,我们使用批处理文件运行一些构建脚本,这些解决方案中的每个配置都调用MSBuudioEXE。

为什么msbuild和link.exe是;悬挂;在构建过程中? 我们有几个C++解决方案,我们使用批处理文件运行一些构建脚本,这些解决方案中的每个配置都调用MSBuudioEXE。,c++,visual-studio,msbuild,batch-file,linker,C++,Visual Studio,Msbuild,Batch File,Linker,这在3台开发人员机器和一台构建机器上运行得很好,但是当链接时,其中一个项目开始挂起。这只发生在最新的四核机器上,我想是2.8ghz。它运行在WindowsServer2003上,其他的运行在XP或Vista上 即使我更改了bat文件中构建的顺序,这种情况也会持续发生 如果我在那台机器上从IDE运行构建,它不会挂起 你知道这可能是什么原因吗 我正在使用VisualStudio2008 编辑: 我现在看到,当它挂起时,以下各项正在运行: link.exe(2个实例),一个内存使用量大,一个内存使

这在3台开发人员机器和一台构建机器上运行得很好,但是当链接时,其中一个项目开始挂起。这只发生在最新的四核机器上,我想是2.8ghz。它运行在WindowsServer2003上,其他的运行在XP或Vista上

即使我更改了bat文件中构建的顺序,这种情况也会持续发生

如果我在那台机器上从IDE运行构建,它不会挂起

你知道这可能是什么原因吗

我正在使用VisualStudio2008


编辑: 我现在看到,当它挂起时,以下各项正在运行:

  • link.exe(2个实例),一个内存使用量大,一个内存使用量小
  • vcbuild.exe
  • msbuild.exe
  • vcbuildhelper.exe
  • mspdbsrv.exe

编辑: exe文件存在,pdb文件也存在

exe文件被某个进程锁定,我无法删除或移动它。但我可以删除pdb文件

如果只使用VCBuild.exe,我也会遇到问题

我决定尝试调试2个link.exe进程和mspdbsrv.exe进程

当我将调试器/MSdev IDE连接到它们时,我收到一个消息框,上面说应用程序已死锁和/或“所有线程都已退出”

我想我将不得不检查该机器上安装的msdev的服务包


编辑: 在debug.htm输出文件中,生成link.exe命令后,我会得到各种各样的输出

但是,对于buildlog.htm版本,linke.exe行是最后一行

这显然是一个挂在链接器上的问题。肯定是微软的错误

我现在试图弄清楚.rsp(链接器响应)文件是什么

当我发布:

link.exe@c:\\Release\rsp0000535202392.rsp/NOLOGO/ERRORREPORT:QUEUE

这是发布构建日志中的最后一行。调试版之后会有更多的信息

重新安装Visual Studio的其他版本并没有解决此问题


我将向Microsoft打开一个问题/票据。如果可以的话,我会发布一个答案。

您在脚本中使用xcopy吗?建议使用cmd/c“.”包装xcopy作为解决方案


如果不是这样,我建议缩小范围,只让一个cpu工作(即删除/maxcpucount),这将排除编译过程之间任何形式的竞争条件。

您是否尝试过禁用增量链接,或者总是强制全部重建?

您可以尝试以下操作:通过 菜单->工具->选项->项目和解决方案->构建和运行

在这里,您可以将“MSBuild项目生成输出详细信息”设置为 “诊断性”。也许这会提供更多关于什么是 出问题了

在同一对话框中,您可以设置“并行项目的最大数量”
构建“1”。也许这在link.exe“挂起”时起作用。

整个程序优化(/GL和/LTCG)和/MP不要混合使用——链接器挂起。这是我提出来的

结果是,这是VS2008中确认的错误;如果需要热修复程序,请联系PSS;该修复程序包含在VS2010中

如果您不能等待那么久,请关闭/MP(较慢的编译)或/LTCG(较慢的代码)


mspdbsrv.exe用于将所有调试信息合并到一个pdb文件中。mspdbsrv.exe的VS2005版本存在错误,可能是VS2005版本存在一些相同的问题。对某些人来说,在建造之前杀死它是一种改变。我们还将把它添加到构建中,因为我们经常遇到未知的PDB错误。

我也遇到过类似的问题,但使用Visual Studio 2010

这是一个在另一台计算机上运行良好的项目,但不是我的新计算机。 描述的症状与最初的Visual Studio 2008版本相符

我通过安装VisualStudio2010 Service Pack 1(SP1)解决了这个问题

-或者直接转到microsoft并搜索“Visual Studio 2010 Service Pack 1”

我运行了我的windows“检查更新”,并认为我已经安装了所有的service Pack,但显然,我没有安装任何Visual Studio service Pack

在安装VS2010 SP1之后,我不再有这个问题。
我确认前一段时间我已在其他运行该项目的旧计算机上安装了VS2010和Service Pack 1。

是否考虑附加调试器并查看其挂起的位置?是否将调试器附加到所有CL和MSBuild以及Link.exe进程?我不知道;I don’我不认为那是一个有趣或富有成效的运动。我将不得不打破每一个,并试图调试,鉴于这是一个多核CPU,这将是一个噩梦。除非我遗漏了什么…我的错,我以为挂起的是link.exe。附加到6个进程可能不是一个有用的练习。认为这是最后的手段。使用ProcMon()可能有助于缩小导致挂起的确切进程。我确实尝试过这一点,但不确定asm代码是否有用-调试器向我发送了关于已退出线程的奇怪消息…您使用的是带SP1还是不带SP1的VS2008?我确实注意到,在升级到SP1.Hmm之后,构建过程的多核心逻辑发生了变化。我有一个post commit步骤,它调用一个bat文件,该文件将*.exe和*.pdb复制到另一个目录。。。这听起来是个罪魁祸首。我会把它拿出来看看结果。我没修好。但这为我打开了其他可能性,让我看到atI与MS visual studio 98有着完全相同的问题,在配置了2个CPU的虚拟机上运行,删除了一个CPU解决了这个问题我认为增量链接已关闭,因为它无法与MP构建一起工作。我查一下。此脚本始终执行干净的t