C# 在Rider中反编译ASP.NET Core 3.x源代码

C# 在Rider中反编译ASP.NET Core 3.x源代码,c#,.net,ubuntu,.net-core,rider,C#,.net,Ubuntu,.net Core,Rider,我在Ubuntu 18.10上使用Rider 2019.2.3,并安装了3.1.100版的.NET SDK 当我尝试导航到反编译的源代码时,有时只看到方法的声明,而没有它们的实现,例如: public static class IdentityServiceCollectionExtensions { public static IdentityBuilder AddIdentity<TUser, TRole>( this IServiceCollection s

我在Ubuntu 18.10上使用Rider 2019.2.3,并安装了3.1.100版的.NET SDK

当我尝试导航到反编译的源代码时,有时只看到方法的声明,而没有它们的实现,例如:

public static class IdentityServiceCollectionExtensions
{
    public static IdentityBuilder AddIdentity<TUser, TRole>(
      this IServiceCollection services)
      where TUser : class
      where TRole : class;
    ...
}
公共静态类IdentityServiceCollectionExtensions
{
公共静态标识生成器附加标识(
这是(虚拟采集服务)
图瑟:上课在哪里
其中TRole:类;
...
}
Rider从程序集
/usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.0/Ref/netcoreapp3.1/Microsoft.AspNetCore.Identity.dll
获取此源代码。我检查了它的IL代码,看起来这个程序集只包含没有实现的方法的存根

所以我有几个问题:

  • ASP.NET核心库的实际程序集在我的计算机上的位置是什么
  • 如何强制Rider反编译实际程序集

  • 我的
    .csproj
    指定了
    Microsoft.NET.Sdk.Web
    Sdk,所以我想也许我应该安装一些用于Web开发的特殊Sdk,但我找不到任何相关信息。

    实现程序集的基本路径是:

    C:\Program Files\dotnet\shared\

    我创建了一个简单的ASP.NET核心应用程序,并添加了您的
    IdentityBuilder AddIdentity
    函数。反编译时,它也无法自动解析

    您案例的实际装配路径为:

    C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.0\Microsoft.AspNetCore.Identity.dll

    在Ubuntu上,它应该是:

    /usr/share/dotnet/shared/Microsoft.AspNetCore.App/3.1.0/Microsoft.AspNetCore.Identity.dll

    一旦我将这个文件手动添加到反编译器中,我就可以逐步浏览源代码了


    如果路径不存在,您可能必须为Ubuntu安装AspNetCore SDK。

    导航到JetBrains Rider 2019.3中修复的.NET Core 3.0中的反编译方法体。请将您的版本更新到最新的可用版本。

    有关实际来源@基思·尼古拉斯,是的,我知道在哪里可以找到它,但是我想知道,在哪里可以找到计算机上的实际组件。你可能想澄清第1点。然后是的,我还发现了程序集的路径。实际上,这个库是ASP.NET核心运行时的一部分,因此我们可以借助
    dotnet--info
    命令检查带有实际程序集的目录@charles,你能澄清一下,你是如何明确地将程序集添加到反编译器的吗?我使用了Rider,当我尝试添加显式引用时,MSBuild警告我,该引用无法解析。我只安装了Rider和源代码步进,包括.NET核心项目的反编译,您的示例函数在我没有配置任何内容的情况下工作。它只是自动从microsoft服务器下载符号文件。默认设置为:
    工具->外部符号
    使用源代码
    允许下载
    反编译方法
    已选中。