问题标签 [ilasm]

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 回答
829 浏览

c# - 如何加载静态字段?

我正在通过 Reflection.Emit 生成具有静态字段 num1、num2 等的类型。

现在我不知道如何发出代码,将生成类型中的静态字段的内容加载到静态方法的评估堆栈上。到目前为止,我尝试过的是:

但显然这不起作用,因为它试图在“this”上加载一个实例字段,而该字段并未提供给静态方法。

我应该使用哪个操作码来访问静态字段?

0 投票
2 回答
1611 浏览

.net - 修复 .net 后 Ilasm.exe 丢失

我已经修复了 .net 4.0 但(仍然)找不到:

伊斯兰文件

有任何想法吗?我需要它来做到这一点:

程序集的强名称签名

0 投票
1 回答
281 浏览

.net - 如何用 Mono.Cecil 的 rethrow 替换 ILAsm throw?

我有一个 C# dll,其成员类似于以下内容:

我想出了如何获得throw 操作码

我的问题是如何将 throw opcode 替换为rethrow opcode

0 投票
3 回答
1452 浏览

c# - 我是否正确理解此 MSIL 代码?

我在 C# 中有以下代码

我正在阅读 IL 代码,我以前从未编写过汇编程序,所以我问我每行所做的是否正确。

我是否正确理解了这个程序?

0 投票
1 回答
989 浏览

c# - 无法使用 ProcessInfo 运行 ILAsm

我正在尝试使用 bat 文件和 C# 编译 IL 代码。这是一个 C# 代码

这是一个bat文件

运行 ILAsm 的字符串完全相同(即processStartInfo.Arguments = Arguments = "c:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\ilasm.exe Source.il /exe /output:my-assebmly.exe /debug=IMPL")

尽管如此,当我使用 C# 运行时出现错误

程序无法启动,因为您的计算机缺少 fusion.dll。尝试重新安装程序以解决此问题。

我如何解决它 ?我需要使用 C# 运行 ILAsm。

0 投票
3 回答
4578 浏览

compiler-construction - 使用 ILASM 将 IL 编译为 EXE 时失败

我花了几个小时试图找出问题所在。我知道该程序可以正常工作,因为我通过在 MonoDevelop 中调试 .il 进行了测试,但是我无法通过它进行编译。这是来自命令提示符的日志:

http://pastebin.com/NYWAbrUV

任何帮助表示赞赏。

0 投票
1 回答
359 浏览

.net - 你能在 mdbg 中看到评估堆栈吗?

假设我有以下 CIL:

然后我ilasm /debug main.il用来组装 exe 和 pdb 文件以在 mdbg 中使用。


我的问题是,当我在第 3 行时,在add执行操作之前,我想查看评估堆栈,它会显示我之前加载的两个 int32 常量 40 和 2。

如何在 mdbg 中查看此评估堆栈?

0 投票
2 回答
16250 浏览

c# - 无论 .NET 版本/环境如何,都能保证找到 ildasm.exe 和 ilasm.exe 文件的文件路径?

有没有办法以编程方式获取 ildasm.exe/ilasm.exe 可执行文件的 FileInfo/Path?在对 dll/exe 文件进行一些更改后,我正在尝试对其进行适当的反编译和重新编译(我猜 PostSharp 做了类似的事情来在编译后更改 IL)。

我发现一篇博客文章指出:

但是,当我运行此代码时,该目录不存在(主要是因为我的 SDK 版本是 7.1),所以在我的本地机器上,正确的路径是@"Microsoft SDKs\Windows\v7.1\bin". 如何确保我可以真正找到 ildasm.exe?

同样,我发现了另一篇关于如何访问 ilasm.exe 的博客文章:

虽然这可行,但我注意到我有 Framework 和 Framework64,并且在 Framework 本身内我有所有版本,直到 v4.0.30319(与 Framework64 相同)。那么,我怎么知道该使用哪一个呢?它应该基于我所针对的 .NET Framework 版本吗?

概括:

  • 如何适当地保证找到 ildasm.exe 的正确路径?
  • 如何正确选择正确的 ilasm.exe 进行编译?
0 投票
1 回答
2187 浏览

winforms - 使用 ilasm 的令牌 MZ 的语法错误

我有一个我正在尝试使用的预构建 dll 程序集。它是一个 winforms 库,当我引用它时,我可以在设计器/代码中使用它而不会出错。当我运行它时,我得到:

程序集生成失败 - 引用的程序集“YARTE”没有强名称

我决定做 ildasm => ilasm 往返,但我一直收到这个错误

我在其他地方没有找到太多帮助,但我认为这不是一个罕见的问题。

0 投票
1 回答
2447 浏览

.net - 程序集重新编译和程序集加载问题

我有一个可执行文件 (Foo.exe) 和一个库 Bar.dll。两个二进制文件都没有强名称签名。Bar.dll 库依赖于可执行文件,并以如下方式在其清单中指定:

我使用 ildasm 和 ilasm 从 Foo.exe -> msil -> Foo.exe 进行往返。使用 ildasm 进行反编译会生成单个 .il 文件、.res 文件和多个 .resources 文件。我以这种方式重新编译应用程序:

重新编译后,应用程序工作并可以启动。现在的问题是依赖于可执行文件的库 Bar.dll 在重新编译后无法加载它(Foo.exe 可执行文件)。这是融合日志给我的:

现在在重新编译之前,文件加载成功,融合日志中的唯一区别是最后 4 行: