【问题标题】:Why doesn't Edit and Continue work on the x64 CLR?为什么“编辑并继续”在 x64 CLR 上不起作用?
【发布时间】:2009-06-05 13:43:31
【问题描述】:

Microsoft 已解释他们将不支持 Visual Studio 2010 中 x64 CLR 下的“编辑并继续”:

在 VS2010 中为 .NET 4.0 创建新的 Visual C# 控制台应用程序时,项目的默认目标设置是针对 x86 平台而不是像 Visual Studio 2008 那样的任何 CPU (MSIL)

[...]

不幸的是,为 64 位 CLR 添加对 EnC 的真正支持是一项大型工作,鉴于将平台目标更改为 x86 的工作,其他功能被优先考虑。

(来自http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=455103

Microsoft Connect 上的描述使它看起来好像 64 位编辑并继续是一项重大的体系结构更改。我的问题是:x64 有什么不同使 EnC 变得困难?

除了“64 位 EnC 不起作用”之外,我在网上找不到太多技术细节。

【问题讨论】:

标签: .net 64-bit


【解决方案1】:

“编辑并继续”要求编译器修补正在运行的可执行文件。这通常通过替换所有更改的功能来完成。显然,其 JITted 版本也必须被丢弃,并且调用者调整到可能的新位置。

这对于 x64 来说并不是特别困难,可能与 x86 一样难。但与 x86 不同的是,这还没有为 x64 完成。而且 x86 和 x64 之间的差异足够大,您不能简单地采用 x86 EnC 代码并在 8 中每 4 更改一次。

【讨论】:

  • 这是一个合理的解释。但是考虑到 VS2005、VS2008 和现在的 VS2010 已经有了工作的 32 位 EnC,并且这些新框架和 IDE 中的每一个在其他领域都有各种令人印象深刻的新功能,我想知道他们是否不能抽出一点时间来花费在 64 位 EnC 上。
  • 自 VS2005 首次发布以来,正确的 x64 调试已经“到来”。到目前为止,我们已经看到 3 个主要的 IDE 版本和 64 位开发人员仍然被视为二等公民。
  • 做那四个; VS2012也不支持。
  • VS2013 现在supports这个。
【解决方案2】:

这篇博文扩展了 MSalters 所说的内容: http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

基本上,微软对改进 x86 调试工具(例如 Intellitrace)比改进 x64 调试工具更感兴趣。这非常令人担忧,因为似乎 Intellitrace 在某些时候也必须移植到 x64,这可能会进一步延迟 x64 调试的改进。

【讨论】:

    【解决方案3】:

    似乎新的 .NET 框架支持这一点。来自.NET Framework 4.5.1 Preview的详情部分

    .NET Framework 4.5.1 Preview ... 包括这些 显着的...增强功能:

    ...
    64 位编辑并继续
    ...

    在安装了 .NET 4.5.1 Preview 的 Visual Studio 2012 中仍然无法使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多