Visual Studio 2010:为什么我在代理中进行更改时无法恢复应用程序? [重复]

    这个问题在这里已有答案:                           为什么我不能在调试器中编辑包含匿名方法的方法?                                      4个答案                                    
已邀请:
“编辑并继续”不支持所有可能的代码更改。它在MSDN库中有详细记录,我将在此重新列表: 对当前语句或任何其他活动语句的更改。 全局符号的更改,包括以下内容: 添加新类型。 向类型添加方法。 更改类型的签名。 将字段,事件或属性添加到类型。 编辑匿名方法或包含匿名方法的任何方法。 添加新的匿名方法。 添加,删除或更改属性。 添加,删除或更改使用指令。 删除或更改局部变量。允许添加局部变量。 添加foreach,使用或锁定活动语句。 修改包含yield return或yield break语句的方法。 使用由匿名方法初始化的字段更改构造函数。 您正在违反“更改类型的签名”限制。     
您可以在代码中进行某些更改,这些更改足以使调试器在没有完全重新启动的情况下无法恢复。通常,您可以安全地更改方法中的代码行,但如果您更改类本身(例如,向方法签名添加参数),则需要完全重新编译。 匿名委托和lambda函数在.NET中表示,几乎是一个带有一些变量引用的匿名类。由于调试器没有名称可以在重新启动时将此特定lambda表达式“重新连接”,因此更改委托函数基本上会将其转换为新类。您会注意到匿名类型的类似行为。     
回答你的问题:   1)这取决于编程语言吗?还是框架?还是编辑? 我不知道.NET术语中的确切名称,但在Java / Eclipse中,代码在运行时的修改称为热代码替换。这完全取决于运行时环境是否能够接受这种更改,同时保持程序的其余部分有效。   2)是否只有当我改变代表时?还是其他的东西? 如果改变是在行为中,我会说它更有可能被接受。结构更改(如添加方法,重命名类或修改其他可能更复杂的构造,转换为类或其他静态结构)将导致大多数时间出现问题。   3)为什么会这样? 那么,其他答案应该清楚这一点。在运行时期间无法进行某些更改。静态类型安全是另外可能被绕过的原因。     
1:您可以在ASPX页面中编辑html标记,但是如果弄乱编译后的代码,则需要暂停应用程序并重新编译。 2:不,如果您更改任何已编译的代码或配置文件,您将需要停止调试和重新编译。 3:就像我在1-2中暗示的那样,c#和vb代码在调试开始之前被编译,因此为了查看对该代码的更改,您将不得不重新编译。     

要回复问题请先登录注册