2

我想在 SharePoint 网站上调试 Microsoft 代码。

我下载了.NET Reflector Visual Studio Extension,这样我就可以进入 Microsoft 代码,但是当我尝试获取一些变量的值时 - 我得到了错误:"Cannot obtain value of local or argument <this> as it is not available at this instruction pointer, possibly because it has been optimized away."

我尝试取消优化,我看到了 Cameron MacFarland 在这里写的内容,所以我创建了一个文件,其中包含打开 VS 的命令而不进行 JIT 优化。至于第二个动作 - 当涉及到 IIS 正在运行的 SharePoint 应用程序时,我不知道该怎么做。

如何做到这一点?

编辑:我的问题基本上是:当代码由 IIS 运行时,如何禁用代码优化?

4

2 回答 2

2

我在这里发布了答案,然后看到它也适用于您的具体问题。

长话短说,您可以更改注册表设置以使其正常工作。在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment”的注册表中添加一个名为“COMPLUS_ZAPDISABLE”的字符串键。将键值设置为“1”

这篇原创的Red Gate 文章帮助我找到了这个技巧。

于 2013-03-12T15:12:25.570 回答
1

我最后做的解决方案,或多或少是 JaredPar 在这里写的:

我创建了一个如下所示的文件:

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1 
AllowOptimize=0

我把它放在 GAC 中,在我想禁用它的优化的每个 dll 文件夹中,并用 dll 的名称命名它,扩展名为“ini”。

现在,我可以使用绝大多数变量。

于 2013-04-25T12:40:12.263 回答