VS 2017立即窗口显示“C#编译器内部错误”

14
我使用的是Visual Studio 2017 (15.6.6)。在调试时,我尝试在即时窗口中评估简单的表达式,如int a = 2;,但会抛出一个错误:

C#编译器内部错误

我尝试启用Use Managed Compatibility Mode, 如这个问题中所提示的那样,但没有帮助。

感谢任何帮助。


这是一个(目前未解决的)开发者社区问题:https://developercommunity.visualstudio.com/content/problem/205713/internal-error-int-the-c-compiler.html - Daniel Fisher lennybacon
2
重建项目对我有用。 - Elliott Beach
这现在也被追踪为 Github 问题:https://github.com/dotnet/roslyn/issues/32249 - Thaoden
6个回答

10

进一步搜索后,我发现这个GitHub问题中有一个答案建议还要检查使用传统的C#和VB表达式解析器。 Visual Studio会警告我检查此选项,但开启后,我可以再次在即时窗口中评估表达式。

甚至可以再次关闭使用托管兼容性模式

更新:请注意,使用传统的表达式解析器会防止我在调试时检查本地变量,所以我不会称其为解决方案。


2

在我的情况下,问题出现在特定的程序集中。当我们查看程序集信息时(从解决方案资源管理器中右键单击项目,选择属性,然后单击程序集信息),它是空白的。

所以我们给它一个全局唯一标识符(Guid),然后重新构建,问题就解决了。


0

当处理自己的 NuGet 包时,我遇到了相同的错误。

在我的情况下,VS 解析路径到“%userprofile%.nuget”文件夹中的程序集副本,而不是生成输出文件夹。

目前,我不知道如何在没有为引用指定提示的新项目类型中防止此错误解析,但有一个简单的解决方法:在调试之前只需从%userprofile%\.nuget\packages\%yourpackage%中删除已解压缩的包的副本即可。


0

这个问题也发生在 Visual Studio 2022 17.3.2 上,可以在反馈中心找到“已关闭,信息不足”的状态。一如既往,无能的外包印度又来了。

无论如何,停止调试并重新构建解决方案可以解决问题。这可能与完全破损和无用的 Hot Reload 有关。


这绝对是我在 Reddit 上读过的最好的评论。 - Excessive

0

我曾经遇到过同样的问题。不知道你是否也是这个原因,但对我来说,问题出在我选择了“发布”版本而非“调试”版本。所以当我切换回调试版本后,就解决了这个错误。


-1
清空目录 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files 对我解决了这个问题。如果问题再次出现,我会尝试构建一个 repo...

@Thaoden 你调试过ASP.NET应用程序吗?我经常使用这种方法并且取得了成功... - Daniel Fisher lennybacon
ASP.NET Core - 使用 Visual Studio 2019 RC,评估简单表达式再次按预期工作。 - Thaoden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接