问题标签 [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 投票
0 回答
113 浏览

c# - 项目部署错误上的 XAML 解析异常

我有一个 WPF 应用程序,可以在某些平台和系统上正常工作,当然包括开发系统,但是,它在某些(但不是全部)部署的平台上遇到问题。当然,这听起来像是一个关于依赖关系的问题,但我不确定如何追踪什么/哪个。WERInternalMetadata.xml 问题签名显示:

当我使用 ILDASM 从参数 7 中查找 105 时,它导致我这样做:

我不知道如何做出正面或反面......我会非常非常感谢任何帮助!

0 投票
2 回答
362 浏览

ildasm - Ildasm Ctrl + M(元数据)

我已经打开了由我创建的程序集,命名CarLibrary.dllildasm.exeCTRLM

当我尝试打开假设时,这确实有效mscorlib.dll

为什么会这样?我正在使用 MS VS .NET 2013。

0 投票
1 回答
44 浏览

.net - 针对不同 .NET 版本的程序集之间是否存在显着差异?

在创建 NuGet 包时,我总是问自己应该提供多少个目标?通常我会创建从 4.0 到 4.6 的所有可能版本,所有版本介于两者之间。

但这真的有必要吗?我注意到所有程序集都具有相同的大小,并且为了验证它们的目标版本是否正确,我使用了 JustDecompile。

我不是 IL 专家,所以当我使用 ILDasm 打开程序集时,我不知道该看什么。我是否仍然应该编译几个不同的版本,还是只有在我使用特定于更高 .NET 版本的东西(如 string.IsNullOrWhitespace 等)时才有意义?

0 投票
2 回答
154 浏览

c# - 基于可空类型的对象仅在对象非空时才被装箱

我创建了一个简单的C#程序:

根据 MSDN:

基于可空类型的对象仅在对象非空时才被装箱。如果 HasValue 为 false,则将对象引用分配给 null而不是装箱

我已经尝试了我的可执行文件,ILDASM发现IL代码调用了box方法。

我的问题是:为什么叫它?也许我做错了什么或误解了什么?

0 投票
1 回答
716 浏览

c# - IL代码中maxstack值的计算

我有以下程序来添加值。当我在主方法中添加方法调用并查看 ILDASM.EXE 时,Maxstack 大小为 2。取消注释后,maxstack 大小变为 4。

为什么在 Main 方法的情况下,所有变量都没有进入堆栈,因为堆栈大小仅保持 2,而在 Add 方法调用的情况下,每个变量都进入堆栈?这种情况是不是内部主要方法计算是一一发生的,所以一次只需要两个变量。

请清除我的困惑。

0 投票
1 回答
2588 浏览

c# - IL中“specialname”和“rtspecialname”的用途和意义

我现在正在尝试专门了解 IL 代码和 C# 内部结构,我编写了一个简单的 c# hello world 程序,其代码是:

这是为类的构造函数生成的 IL Program

我无法理解 specialname 和 rtspecialname 的含义和用途它们用途是什么?

0 投票
2 回答
1313 浏览

c# - 添加一个 int 变量时生成不同的 IL

我在 c# 中有这个程序:

当我编译它时,以下是编译器为 Main 生成的 IL:

很好,我明白了,现在如果我添加另一个整数变量,则会生成不同的东西,这是修改后的 c# 代码:

这是针对上述 c# 代码生成的 IL:

如果您现在注意到该stloc.s语句是使用V_4which is local 生成的,但我不清楚这一点,我也没有得到这些本地人的目的是什么,我的意思是这些:

0 投票
0 回答
249 浏览

cil - ILDASM 错误反汇编方法

我需要在 IL 级别调试 dll,并阅读http://blogs.msdn.com/b/jmstall/archive/2004/10/03/237137.aspx我想用 il(d )asm。

拆卸通过,但重新组装失败

然后我打开 ILSpy 中的 DLL 和记事本中生成的 IL 文件:

ILSpy:

ILDASM(第 71204 行是 IL_0016):

似乎缺少 stloc.s 的索引。

ILDasm 帮助 -> 信息显示版本 4.0.30319.0。

0 投票
1 回答
126 浏览

c# - 未优化的 MSIL 中多余的 NOP 和分支

当我将以下代码编译为调试...

...编译器生成带有看似无用指令的奇怪字节码。例如,查看为属性的 getter 生成的内容MyProperty(用 反汇编ildasm.exe):

具体来说,nopatIL_0000在那里做什么?为什么编译器会突然生成这条无用的br.s指令IL_0008?为什么它会创建临时局部变量CS$1$0000

对于发布配置,指令集按预期生成:


编辑

我想我已经找到了一个问题的答案,为什么分支和临时局部变量存在于另一个问题中:这可能是为了在调试期间轻松设置断点。所以剩下的问题是为什么要生成nop指令。

0 投票
3 回答
469 浏览

c# - 在 IL 中 float 和 double 是如何工作的

例如,当我们声明一个变量时int

生成以下 IL:

我可以理解 1A 是 4 的十六进制表示,所以我理解正确的是保存十六进制值用于引用它的值还是它意味着不同的东西?

当我声明一个双重变量时:

生成了以下 IL,我无法在其中得到一些东西:

23 是怎么来的,这意味着什么,AE47E17A14AE2840这里有什么?

当我声明具有相同值的浮点数时:

我现在有这个 IL:

同样的问题在这里以及它是怎么22来的,它的意思是什么A4704541