【问题标题】:VS 2017 immediate window shows "Internal error in the C# compiler"VS 2017 即时窗口显示“C# 编译器中的内部错误”
【发布时间】:2018-10-06 22:47:52
【问题描述】:

我使用 Visual Studio 2017 (15.6.6)。调试时,我尝试在即时窗口中评估像int a = 2; 这样的简单表达式。一个错误

C# 编译器中的内部错误

被抛出。

我尝试按照this question 中的提示启用Use Managed Compatibility Mode,但没有帮助。

感谢您的帮助。

【问题讨论】:

标签: c# debugging visual-studio-2017 visual-studio-debugging immediate-window


【解决方案1】:

进一步搜索我发现this issue on GitHub,其中一个答案建议同时检查Use the legacy C# and VB expression evaluators。 Visual Studio 给我一个关于检查此选项的警告,但打开它我可以再次在即时窗口中评估表达式。

甚至可以再次关闭Use Managed Compatibility Mode

更新:请注意,虽然使用旧的表达式求值器会阻止我在调试时检查局部变量,所以我不会将其称为解决方案。

【讨论】:

    【解决方案2】:

    我有同样的问题。不知道这是否是您的选择,但对我来说这是下一个问题:打开了“发布”而不是“调试”版本。所以一旦我切换回调试,我就摆脱了这个错误。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • @Thaoden 你调试过 ASP.NET 应用程序吗?我经常使用这种方法并取得成功...
      • ASP.NET Core - 使用 Visual Studio 2019 RC,评估简单表达式再次按预期工作。
      【解决方案4】:

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

      所以我们给了它一个 Guid,然后重新构建它并且它工作了。

      【讨论】:

        【解决方案5】:

        我在处理自己的 NuGet 包时遇到了同样的错误。 在我的情况下,VS 在“%userprofile%.nuget”文件夹中解析我的程序集副本的路径,而不是构建输出文件夹。

        目前,我不知道如何防止新项目类型的这种未解决问题,其中没有为引用指定提示,但有一个简单的解决方法:只需在调试前从 %userprofile%\.nuget\packages\%yourpackage% 中删除未打包的包副本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-01
          • 2011-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多