gpt4 book ai didi

c# - dnSpy 显示异步方法的奇怪反汇编代码

转载 作者:行者123 更新时间:2023-12-04 12:31:38 41 4
gpt4 key购买 nike

我正在尝试使用最新版本的 dnSpy 反汇编我的 .NET core 3.1 二进制文件,但得到如下输出:
enter image description here
原方法:

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不可用,这就是我在这里问的原因。

最佳答案

你在那里看到的是完全正常的。您裁剪的只是生成代码的一部分。
突出显示的代码保存局部变量(作为状态机的字段)以保留它们的状态。
代码生成非常复杂,因为有几个用例以不同的方式处理。但是一般的想法在以下文章中写得很好:

  • Sergey Tepliakov's blog
  • Dixon's blog
  • Ranjeet Signh's blog

  • Stephen Toub has written a blog post它揭示了 .NET 团队在 .NET 5 中完成的一些优化。

    关于c# - dnSpy 显示异步方法的奇怪反汇编代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65110369/

    41 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com