即使我创建一个干净的WinForms项目,编辑并继续不起作用,并给我错误:
将调试器附加到已在运行的进程或在构建或运行时优化正在调试的代码时,不允许进行更改.
我也在MSDN网站上发现了这篇文章:
不支持的方案
在以下调试方案中,"编辑并继续"不可用:
在Windows 98上进行调试.
混合模式(本机/托管)调试.
SQL调试.
调试Dr. Watson转储.
在未处理的异常之后编辑代码,此时未选中"在未处理的异常上展开调用堆栈"选项.
调试嵌入式运行时应用程序.
使用"附加到"调试应用程序,而不是使用"调试"菜单中的"启动"运行应用程序.
调试优化代码.
目标是64位应用程序时调试托管代码.如果要使用"编辑并继续",则必须将目标设置为x86.("项目属性","编译"选项卡,"高级编译器"设置.).
在由于构建错误而无法构建新版本之后调试旧版本的代码.
但我可以对此列表中的每个项目回答"否".
它以前工作过,但几天前它停止工作,我不知道可能是什么原因.
我偶然发现了一个非常烦人的问题.
当我调试我的软件时,一切运行正常,但如果我点击断点并编辑代码,当我尝试继续运行时,我收到一个错误:
Metadata file 'XYZ' could not be found
看了一会儿之后,我发现了一些类似的问题,但它们都是关于构建失败的,这不是我的情况(这只发生在edit-continue之后).
到目前为止我尝试了什么:
一些额外的信息:
Debug配置运行它时,不会发生错误.有任何想法吗?
c# configuration edit-and-continue visual-studio visual-studio-2012
我正在使用Visual Studio 2008,C#.我尝试使用编辑并继续(在调试时编辑代码),并获得此异常:
"不允许对64位应用程序进行更改"
这是为什么?有解决方法吗?
在Windows 7 64位计算机上使用Visual Studio 2010时,我遇到了编辑和继续的问题.我确保了以下几点
当我遇到一个断点并尝试编辑我并面对以下消息时.
在以下情况下,不允许进行更改http://sedotech.com/Content/images/edit-and-continue.png
对于我创建的所有项目,无论它们是WPF/Win Forms/VB.NET/C#/ .NET 4/.NET 3,都会发生这种情况.
有任何想法吗?
64-bit x86 visual-studio-2010 edit-and-continue visual-studio
Visual Studio编辑并继续功能在Visual Studio 2010上停止,我不知道是什么导致了该问题.
我正在使用C#开发Windows应用程序.此应用程序最初是在Visual Studio 2008中开发的,后来升级到Visual Studio 2010.
一切都运行正常,包括编辑和继续,直到我将.NET Framework从3.5升级到4.0.
现在,当我使用调试模式时,更改IDE中代码的任何行会产生以下消息:
编辑是无法编译的.在修复编译错误之前,执行无法继续.
实际上,没有编译错误,我必须重新启动Visual Studio才能运行更新.
如何进行编辑并继续再次工作?
我在其他问题中看到它说Linq查询语法编译为Lambda.
那么为什么在方法中有Lambda表达式时你不能进行编辑和继续,而使用查询表示法可以吗?
什么是最令人愤怒的,并且认真地让我考虑切换到在任何地方使用查询表示法,即使你的代码不在Lambda中,但是在同一方法中的其他地方有一个Lambda,你不能编辑并继续!这就像是对粗心的开发人员造成的无端痛苦!
我开发并维护一个用C#2.0编写的大型(500k + LOC)WinForms应用程序.它是多用户,目前部署在大约15台机器上.系统的开发正在进行中(可以被认为是一个永久的测试版),并且很少有人能够保护用户免受可能在每周构建中引入的潜在新错误的影响.
出于这个原因,我发现自己变得非常依赖于调试器中的编辑和继续.它不仅有助于寻找漏洞和修复漏洞,而且在某些情况下还可以进行持续开发.我发现能够在正在运行的应用程序的上下文中执行新编写的代码非常有价值 - 不需要重新编译并为新代码添加特定的入口点(必须添加虚拟菜单选项,按钮等等)应用程序并记住在下一个生产构建之前删除它们 - 所有内容都可以在不停止进程的情况下实时进行测试和测试.
我坚持编辑并继续这么高的考虑,我积极地编写代码以完全兼容它.例如,我避免:
yield(实用程序代码除外)现在,我完全清楚C#3和4中的新语言功能在很大程度上与编辑和继续(lambda表达式,LINQ等)不兼容.这是我拒绝将项目迁移到更新版本的框架的原因之一.
我的问题是,避免使用这些更高级的结构来支持非常非常容易调试的代码是否是一种好的做法?这种发展是否合法,还是浪费?另外,重要的是,这些构造中的任何一个(lambda表达式,匿名方法等)是否会产生性能/内存开销,这些代码可以避免编写良好,编辑和继续兼容的代码?...或者C#编译器的内部工作方式是否使这些高级构造比手动编写的"扩展"代码运行得更快?
我知道E&C是一个有争议的主题,有人说它鼓励一种错误的调试方法,但仍然 - 我认为我们可以同意很多情况下它显然是有用的 - 试验一些常量的不同值,重新设计GUI参数在飞行中找到一个好看的...你的名字.
我的问题是:我们是否会在GDB上进行E&C?我知道它是一个特定于平台的功能,需要与编译器,调试器和操作系统进行一些认真的合作(MSVC有一个简单,因为编译器和调试器总是在一个包中),但是......它仍然应该是可行的.我甚至听说过苹果公司在他们的GCC版本中实施了它[引证需要].而且我会说它确实可行.
知道关于MSVC的E&C的所有炒作(我的经验表明这是MSVC用户在被问及"为什么不切换到Eclipse和gcc/gdb"时首先提到的),我很惊讶,经过相当多年的GCC/GDB仍然没有有这样的功能.这有什么好的理由吗?我们说话的时候有人正在研究吗?
我在Visual Studio 2012解决方案中有以下项目:
/clr)静态lib项目,使用/ZIEdit And Continue 编译.C++/CLI项目使用以下警告构建:
warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
Run Code Online (Sandbox Code Playgroud)
如果将/ OPT:NOLBR添加到C++/CLI项目的链接器选项中,则警告变为:
warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
Run Code Online (Sandbox Code Playgroud)
任何更改C++/CLI项目的增量链接设置的尝试都不会更改警告(C++/CLI项目永远不会以递增方式链接).
我知道我将无法在C++/CLI项目中使用"编辑并继续",因为这不受支持.实际上,在静态lib项目中将/ ZI更改为/ Zi(禁用编辑并继续)会消除警告,但我不能这样做 - 该lib的其他非CLR使用者需要使用"编辑并继续".
如何在不禁用静态库中的编辑和继续的情况下摆脱此警告(并且希望不为静态库的本机和CLR用户维护单独的构建配置)?我的意思是,有没有办法要求链接器忽略/EDITANDCONTINUE嵌入在引用的静态库中的指令(与/NODEFAULTLIB忽略/DEFAULTLIB指令的方式相同)?
我创建了一个最小的VS解决方案,可以重现所描述的问题.
据称vs 2013增加了对编辑的支持并继续64位(参见http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/26/debugging-support-for-64-bit-edit-and-continue -in-visual-studio-2013.aspx).
但是我无法让它发挥作用.
在转到我的.net 4.5.1 asp.net mvc Web应用程序项目的属性,并选中"启用编辑并继续"复选框后,我现在可以在断点处编辑代码.
问题是在保存并尝试继续踩到低谷后,我得到一个错误对话框说:
编辑是无法编译的.在修复编译错误之前,执行无法继续
在错误列表窗口中,这两个错误始终显示:
类型'System.IEquatable`1'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.
"System.ValueType"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.
这真是奇怪的错误信息吧?无论我的改变多么微不足道,我总是得到同样的错误.
注意:我运行Windows 7/vs 2013 ultimate,我的项目设置为在项目属性中使用IIS Express.
.net edit-and-continue visual-studio .net-4.5 visual-studio-2013