自Visual Studio 2017版本15.8
起,我们团队中的某些计算机上出现了以下非常奇怪的生成错误。
另外,Visual Studio可以识别它
但是IDE本身不会崩溃。
要检查它是否仅发生在我们自己的解决方案上,我创建了一个新的简单命令行工具项目,该项目显示了相同的构建行为。因此,它并不是我们的解决方案所独有的。
我尝试获取help from Microsoft,但似乎他们不知道该怎么做。该线程不会显示我提供给他们的所有材料。他们从我那里得到了许多日志和一个示例项目。无法提供故障转储,因为Visual Studio本身不会崩溃。
修复并完全卸载,新安装的Visual Studio也无济于事。
编辑:它不仅发生在我的开发机器上,而且还发生在我们的构建服务器上(其中有两个)。有趣的是,我们在开发机器上的VM似乎没有这个问题。
答案 0 :(得分:0)
不幸的是,在这种情况下,您只有三个两个选项:
devenv.exe.[number].dmp
文件。用这种方法产生的每个转储文件的大小最大为4 GB.
。确保将DumpFolder
设置在具有足够驱动器空间的位置,或适当调整DumpCount
。我知道,您已经在MS论坛上写道,此错误不会创建一个转储。但是,您是否想像一下,您一天要发生10次崩溃,并且每次崩溃都会写入一个4 GB.
大小的转储文件? 转储创建通常是禁用的,您必须启用它。如何使用Google中的搜索字符串“ How to enable dump files in Windows”或Windows 10
可以找到如何启用它this video。或者,您可以使用编程工具“ ADPlus”来创建内存转储文件和带有来自一个或多个进程的调试输出的日志文件。该工具在this MS Support page中有非常详细的描述。通常,Visual Studio支持不支持Visual Studio开发人员。您必须对他们好,他们会尽其所能。您不能期望他们都知道。他们按照一些给定的指示来做他们的工作。
在您的情况下,支持人员为您提供了链接Reporting Visual Studio crashes and performance issues,其中您必须阅读以下内容:
直接可复制的崩溃
直接可复制的崩溃是所有 具有以下特点:
- 可以通过执行一组已知的步骤来观察
- 可以在多台计算机上观察(如果有)
- 如果这些步骤涉及打开项目或文档,则可以复制为示例代码或可以链接到或链接到项目的项目 作为反馈的一部分提供
对于这些问题,请按照“ How to Report a Problem”中的步骤进行操作 并确保包含以下内容:
- 重现问题的步骤
如上所述的独立复制项目。如果这不可能,那么请包括:
- 打开的项目的语言(C#,C ++等)
- 项目类型(控制台应用程序,ASP.NET等)
- 已安装的所有扩展程序。
最有价值的反馈意见:在这种情况下,最有价值的反馈意见是与问题源一起重现问题的一系列步骤 代码。
未知崩溃
如果您不确定是什么原因导致崩溃或它们看起来是随机的, 那么您可以在每次Visual Studio崩溃时捕获本地转储, 将它们附加到单独的反馈项中。在以下情况下本地保存转储 Visual Studio崩溃,请设置以下注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe] "DumpFolder"="C:\\Crashdumps" "DumpCount"=dword:00000005 "DumpType"=dword:00000002
⚠️用此方法生成的每个转储文件的大小最大为
4 GB.
。确保将DumpFolder
设置在有足够空间的位置 腾出空间或适当调整DumpCount
。每次Visual Studio崩溃时,它将创建一个转储文件
devenv.exe.[number].dmp
文件位于配置位置。然后,使用Visual Studio的“报告问题...” 功能。它会 允许您附加适当的转储。
- 找到您要报告的崩溃的转储文件(查找具有正确创建时间的文件)
- 如果可能,请在提交反馈之前压缩文件(
*.zip
)以减小其大小- 按照“ How to Report a Problem”中的步骤进行操作,并将堆转储附加到新的反馈项。
⚠️不要将堆转储附加到现有的反馈项上。请为您想要的每个堆转储创建一个新的反馈项 提交。如果要求您提供堆转储以 解决先前的反馈项目,只需使用 链接到附加了堆转储的新反馈项。
最有价值的反馈:在这种情况下,最有价值的反馈是崩溃时捕获的堆转储。
请非常仔细地仔细阅读,最好是连续两次甚至是树次。
我希望它能对您有所帮助,并祝您好运!
答案 1 :(得分:0)
在我看来,问题与从GAC加载程序集有关,所以我建议尝试重新安装Microsoft.CodeAnalysis
程序集,看看是否有帮助。
要这样做:
Microsoft.CodeAnalysis
软件包及其必需的依赖项安装到项目中,请确保记下所有正在下载的程序集。gacutil /u [name of assembly]
从GAC卸载现有程序集(对步骤1中的所有程序集执行此操作)gacutil /u [Path to Dll]
为所有dll安装新下载的dll(对步骤1中的所有程序集执行此操作)我希望这会有所帮助!
答案 2 :(得分:0)
根据Dipen的建议,另一个答案似乎在Microsoft.CodeAnalysis
中,请尝试为此安装nuget软件包,如果缺少,请在GAC中重新注册。
如果问题仍然存在,您可以尝试对项目禁用代码分析,例如:
3。保存所有文件,然后尝试重建并运行项目以查看问题是否解决。
答案 3 :(得分:0)
问题是安装了较旧的JustMock版本。只能在罗斯林团队的帮助下解决。