首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dnSpy显示异步方法的奇怪反汇编代码

dnSpy显示异步方法的奇怪反汇编代码
EN

Stack Overflow用户
提问于 2020-12-02 14:46:40
回答 2查看 2.2K关注 0票数 8

我试图使用最新版本的.NET分解我的dnSpy核心3.1二进制文件,但输出如下:

原来的方法:

代码语言:javascript
复制
public async Task<List<FirmwarePackage>> CalculatePackagesDeltaAsync(List<FirmwarePackage> firmwarePackages) {
  var packagesToUpdate = await GetPackageDifferences(firmwarePackages);

  // sort packages
  // "version-update" packages should be updated last, with "mez" being last
  packagesToUpdate = packagesToUpdate
    .OrderBy(x => x.TargetType)
    .ThenBy(x => x.Name)
    .ToList();

  packagesToUpdate.RemoveAll(x => x.Name == "version-update");

  var versionPkgs = firmwarePackages
    .Where(x => x.Name == "version-update")
    .OrderBy(x => x.TargetType);

  packagesToUpdate.AddRange(versionPkgs);
  return packagesToUpdate;
}

这是正常的吗?我怎样才能把它变成更容易理解的东西。试着调试这是一场噩梦。

在github上,issues是不可用的,这就是我在这里问的原因。

EN

回答 2

Stack Overflow用户

发布于 2020-12-02 15:08:58

你能看到的是完全正常的。您所裁剪的只是生成代码的一部分。

突出显示的代码保存局部变量(作为状态机的字段)以保留其状态。

代码生成非常复杂,因为有几个用例是以不同的方式处理的。但是,一般性的想法在以下文章中写得很好:

Stephen写了一篇博文,它揭示了.NET团队在.NET 5中完成的一些优化。

票数 4
EN

Stack Overflow用户

发布于 2022-08-27 23:04:17

对于那些在家观看的人来说,在他们的评论中回响@yoelhalb

实际上,它是选项-> decompiler ->C#->显示隐藏的反编译生成的类和方法中的一个设置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65110369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档