C# 当dotpeek用“/”填充方法时,这意味着什么存根方法(仅限ret指令);

C# 当dotpeek用“/”填充方法时,这意味着什么存根方法(仅限ret指令);,c#,linq,compact-framework,reverse-engineering,dotpeek,C#,Linq,Compact Framework,Reverse Engineering,Dotpeek,我偶然发现了这个关于linq的聚合算法的问题,并认为这是逆向工程最能回答的问题,所以我去了Visual Studio并编写了以下代码(此代码用于Compact framework项目,其中Combine函数只能有两个参数): 然后,我将光标设置为聚合方法,按下F12键(我已安装Resharper),并得到以下代码: // Decompiled with JetBrains decompiler // Type: System.Linq.Enumerable // Assembly: System

我偶然发现了这个关于linq的聚合算法的问题,并认为这是逆向工程最能回答的问题,所以我去了Visual Studio并编写了以下代码(此代码用于Compact framework项目,其中Combine函数只能有两个参数):

然后,我将光标设置为聚合方法,按下F12键(我已安装Resharper),并得到以下代码:

// Decompiled with JetBrains decompiler
// Type: System.Linq.Enumerable
// Assembly: System.Core, Version=3.9.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes
// MVID: 77D23A6E-E19D-435B-9CBB-733D74F92072
// Assembly location: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\WindowsEmbeddedCompact\v3.9\System.Core.dll

Lots of stuff...

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)
{
  // Stub method ('ret' instruction only)
}
//使用JetBrains反编译器反编译
//类型:System.Linq.Enumerable
//程序集:System.Core,Version=3.9.0.0,Culture=neutral,PublicKeyToken=969db8053d3322ac,Retargetable=Yes
//MVID:77D23A6E-E19D-435B-9CBB-733D74F92072
//程序集位置:C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\WindowsEmbeddedCompact\v3.9\System.Core.dll
很多东西。。。
公共静态TAccumulate聚合(此IEnumerable源,TAccumulate种子,Func Func)
{
//存根方法(仅限ret指令)
}
显然,这不是我调用聚合时运行的代码,因为。。。聚合做了些什么。问题是反编译器的结果到底意味着什么?什么是对“聚合”方法进行逆向工程的合适方法

--编辑--


我刚刚意识到,我上面所说的只有在一个紧凑的框架项目中才能实现,当我反编译标准框架的聚合时,我得到了正确的源代码。

如果你想反编译CF程序集,你必须使用实际的BCL,而不是Studio中通常用作参考的存根(不,我不知道他们为什么这么做)。我知道您使用的是3.9,所以我不确定您需要查看的路径,但对于3.5,您可以在这里找到它们:

C:\ProgramFiles(x86)\Microsoft.NET\SDK\CompactFramework\v3.5\Debugger\BCL


作为旁注:你知道源代码是免费提供的吗?哇,谢谢!我没有,但是,在这种情况下,我已经知道“聚合”的作用,这不是我第一次遇到这种情况,所以我仍然对理解如何正确地反编译感兴趣。
// Decompiled with JetBrains decompiler
// Type: System.Linq.Enumerable
// Assembly: System.Core, Version=3.9.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes
// MVID: 77D23A6E-E19D-435B-9CBB-733D74F92072
// Assembly location: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\WindowsEmbeddedCompact\v3.9\System.Core.dll

Lots of stuff...

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)
{
  // Stub method ('ret' instruction only)
}