10

我正在尝试反编译一个库,但是当我单击类名或方法名时,实现代码为空。

例如:

public bool MethodOne(string str)
{
    // nothing
}

会是什么呢?

4

4 回答 4

23

您可能正在尝试反映 Visual Studio 使用的引用程序集以提供多目标支持。这些程序集只有元数据,没有任何实际实现。

如果是这种情况,那么您可以使用VSCommands 2010 扩展来获取带有实现的实际程序集的路径。

组装细节 http://vscommands.com/wp-content/uploads/2011/04/image12.png

于 2010-06-06T14:01:36.993 回答
2

您可能打开了一个参考程序集或其中没有代码的 PIA。

方法体实际上可能是空的。

(其他可能性?)

于 2009-11-20T21:35:44.800 回答
2

我在 VSSDK 程序集中也看到了这一点。

它可能是一个公共提供的接口库,但实际的实现被“隐藏”在某个地方。(也许在 GAC 中?)

基本思路是:

  1. 针对某些“存根”程序集编译代码
  2. 在应用程序中加载时,存根程序集没有被解析,而是实际的

我建议您在调试器中放置一个断点,并查看实际加载的程序集是什么以及从哪里加载它。

于 2009-11-21T13:09:57.560 回答
0

它使用的是什么版本的 .Net 框架?发生这种情况的 .net 4.0 程序集似乎存在一些问题......或者这就是论坛中的一些人所说的:Reflector Forum

有IL吗?

于 2009-11-21T13:03:38.163 回答