问题标签 [ildasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
102 浏览

wpf - 使用 ildasm 检测 WPF 程序集之间的标记差异

我使用 ildasm 来确定构建程序集之间的更改/差异。这很好用,但是当我尝试让它为(WPF 项目)检测 Xaml 中的更改时,我找不到任何差异 - 在对项目标记进行更改之后。

有任何想法吗?我用错了吗?

0 投票
0 回答
34 浏览

c# - 反编译器 instr 中的可见属性

我需要知道如何在程序集中找到 MenuStrip 的 Visible 属性。我创建了一个简单的 WinForms 项目并添加了一个 menuStrip。然后我将 Visible 属性更改为 true/false。我正在使用 ildasm.exe 进行反编译,但我无法发现指定 menuStrip 是否可见的区别,说明是相同的。

0 投票
1 回答
80 浏览

c# - 无法使用带有 Name.EndsWith 的反射在 C# 中找到接口

接口的名称是IService,但是当我试图在 C# 中的反射中找到接口时,它无法找到,因为由于某种原因接口名称更改为Iservice'1

请查看 Ildasm 的附加屏幕截图:

在此处输入图像描述

实际界面就像

查找接口的代码:builder.RegisterAssemblyTypes(Assembly.Load("Services")) .Where(t => t.Name.EndsWith("Service"))

在这里它找不到服务,因为 IService 有一些不同的名称,然后定义了一个。

任何想法为什么名称看起来像这样以及如何解决它?

0 投票
1 回答
50 浏览

.net - 可执行文件在 ILDASM 文件浏览器中不可用

当我导航到 时C:\Windows\System32,我可以看到它包含Query.exe

但是,如果我使用IL DASM并转到相同的位置,Query.exe则与少数其他文件一起丢失,即使我为文件类型选择了任何类型

起初我认为这可能是因为query.exe不能被反编译,但我可以看到.exe那里的其他 s 也不能被IL DASM(例如calc.exe)反编译

为什么IL DASM会有这样的行为?

0 投票
4 回答
6979 浏览

linux - .net-core:相当于 ILDASM / ILASM

.net-core 有相当于 ILDASM / ILASM 的吗?

具体来说,我正在寻找在 Linux 上运行的东西(因此为什么要使用 .net-core)。

0 投票
1 回答
629 浏览

c# - 以编程方式读取 ildasm 输出的最佳方法是什么

我正在尝试使 ildasm 输出更像 json 或 xml,以便以编程方式读取它有点容易。

我打算这样做的方式是逐行读取输出,然后将类和方法等添加到列表中,然后将其修改并重写为 xml,然后读取它。

问题:有没有更聪明或更简单的方法来读取输出?

0 投票
1 回答
531 浏览

c# - 如何从 PEVerify 诊断“类型加载失败”

我正在开发一个编译器,该编译器在某些扩展生成器的情况下会产生错误的输出。PEVerify 只是说“类型加载失败”而没有解释原因。当我过去看到这种情况时,通常是因为生成的类型具有错误数量的泛型参数,但这里似乎一切都匹配。

有什么好方法可以获取有关生成的类型出了什么问题的更详细信息?除此之外,是否有任何好的提示和技术来追踪错误?

PEVerify 的输出:

C:\Build\Test>peverify testcase.exe /VERBOSE /UNIQUE

Microsoft (R) .NET Framework PE 验证程序。版本 4.0.30319.0 版权所有 (c) Microsoft Corporation。版权所有。

[IL]:错误:[C:\Build\Test\testcase.exe:Testing.Linq_operatorModule::IndexWhereImpl[T]][mdToken=0x6000002][offset 0x00000002] 无法解析令牌。

[IL]:错误:[C:\Build\Test\testcase.exe : Testing.Linq_operatorModule+$IndexWhereImpl$3`1[T]::.ctor][mdToken=0x6000006] [HRESULT 0 x8007000B] - 尝试加载格式不正确的程序。

[令牌 0x02000004] 类型加载失败。

3 验证 testcase.exe 的错误

ILDasm 的综合转储在这里,因为它太大而无法放入 SO 帖子。

0 投票
1 回答
149 浏览

c# - 删除方法后从 PEVerify 获取“类型加载失败”

短篇故事

我正在使用以下 Mono.Cecil 代码从接口和实现该接口的类中删除除几个方法之外的所有方法。

代码有效,ILDASM 和 JustDecompile 看起来一切都很好,最重要的是,DLL 可以很好地与客户端一起工作。但是,通过 PEVerify 运行它会Type load failed.[token 0x02001C35].

我曾经ILDASM /TOK看到哪个令牌是 0x02001C35,它是我正在修改的类 ( BigServiceClient)。我只是看不出问题是什么。

有关如何进一步调查 PEVerify 错误的任何指针/想法/提示?

很长的故事

我正在使用旧版 SOAP 接口。我svcutil用来生成代理,但由于这个接口的遗留特性,这些代理非常庞大——就像单个类中有 1500 多个方法一样。这导致了对象创建以及 Castle DynamicProxy 代理的一些性能问题。

作为快速测试,我从生成的 .cs 代理文件中删除了我需要的所有方法(是的,1500+ 中只有 2 个),重新编译并获得更好的结果。时间从 6-7 秒缩短到 20 毫秒以下。

编辑这些文件以手动删除它很乏味,所以我想我会用 Mono.Cecil 自动化它。如上所述,一切正常,但我担心 peverify 错误。

我知道你可以用 IL weaving 做一些非常复杂和疯狂的事情,但我只需要删除一堆未使用的方法。是的,我可以手动解析生成的源代码并将其从那里删除,但如果您曾经见过从 生成的 SOAP 代理svcutil,那么这是我想避免的路径。

0 投票
1 回答
68 浏览

metadata - 元信息中的“CallCnvntn”是什么意思?

我的 *.exe 文件有以下元信息:

但我不明白“CallCnvntn”是什么意思。我在互联网上没有找到任何信息。

顺便问一下,你能解释一下 [AutoLayout]、[AnsiClass] 和 [BeforeFieldInit] 是用来做什么的吗?

0 投票
4 回答
9593 浏览

c# - 找不到 ildasm.exe

我最近升级到 VS 2017 并卸载了之前的 VS 2015。

但是,当我尝试构建和编译我的项目时,我不断收到错误:

Microsoft.Build.Utilities.ToolLocationHelper could not find ildasm.exe

该项目使用 C# 的非托管导出 - https://www.nuget.org/packages/UnmanagedExports

我不明白为什么会出现这条消息,而谷歌搜索却什么也没显示。我确保目标框架是相同的 >> 4.5.2。但什么都不会建立!

我只能找到以下目录:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools

请帮忙,谢谢