C# 在Rider中反编译ASP.NET Core 3.x源代码
我在Ubuntu 18.10上使用Rider 2019.2.3,并安装了3.1.100版的.NET SDK 当我尝试导航到反编译的源代码时,有时只看到方法的声明,而没有它们的实现,例如: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
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代码,看起来这个程序集只包含没有实现的方法的存根
所以我有几个问题:
我的
.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服务器下载符号文件。默认设置为:工具->外部符号
:使用源代码
,允许下载
和反编译方法
已选中。