我正在 Visual Studio 2015 中调试 .NET 4.0 应用程序。我的应用程序构建并运行良好,但是当我尝试在调试器下运行时编辑并继续时,无论我进行了哪些更改或在我的主项目中进行了哪些更改,我得到一个对话框,上面写着:
进行了无法编译的编辑。在修复编译器错误之前无法继续执行。
作为我正在谈论的那种变化的一个例子,我尝试以各种方法添加这一行:
Console.WriteLine("foo");
当我查看 Visual Studio 的错误列表窗格时,我只看到一个错误 CS7038,其描述为“无法发出模块' <my app name>
'”。没有给出文件名、行号或字符。我的代码中没有波浪形的红色下划线。如果我停止正在运行的应用程序,使用更改进行构建,然后再次运行,一切都会构建并运行得很好。因此,构建时编译器和编辑并继续编译器认为可接受的内容之间似乎存在一些差异。
有谁知道如何获取有关为什么在编辑并继续模式下编译失败的更多信息?我阅读了一些关于附加和调试 VBCSCompiler 进程的内容,所以我尝试了这一点,但即使所有异常类型都设置为在抛出时中断,附加的 VS 也从未中断。
我没有分享任何代码,因为这不是关于我的代码的问题,而是关于找出 Edit and Continue 编译器认为错误的策略的问题,据我所知,编译器错误的来源可能在我的任何地方整个项目。
编辑:
如评论中所述,我能够将调试器附加到 Visual Studio 并在编辑代码后单击“继续”时引发异常时中断。异常是System.NotSupportedException
带有以下消息的:“在调试期间不允许更改程序集引用的版本”。它列出了相关程序集的名称,这是我的应用程序使用的一个小型 VB.Net 项目,主要使用 C#。我正在尝试构建一个 MCVE 以提交给 Microsoft,但目前我无法在只有一个 VB 和一个 C# 项目的较小解决方案中重现该问题。
编辑2:
我找到了一种解决方法并自行回答了这个问题,以防其他人遇到这个奇怪的问题,但我为任何可以解释发生了什么的人保留了“已回答”复选标记(为什么编译器认为版本号引用的项目在编辑过程中发生了变化)。