问题标签 [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.
c# - 如何加载静态字段?
我正在通过 Reflection.Emit 生成具有静态字段 num1、num2 等的类型。
现在我不知道如何发出代码,将生成类型中的静态字段的内容加载到静态方法的评估堆栈上。到目前为止,我尝试过的是:
但显然这不起作用,因为它试图在“this”上加载一个实例字段,而该字段并未提供给静态方法。
我应该使用哪个操作码来访问静态字段?
c# - 我是否正确理解此 MSIL 代码?
我在 C# 中有以下代码
我正在阅读 IL 代码,我以前从未编写过汇编程序,所以我问我每行所做的是否正确。
我是否正确理解了这个程序?
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。
compiler-construction - 使用 ILASM 将 IL 编译为 EXE 时失败
我花了几个小时试图找出问题所在。我知道该程序可以正常工作,因为我通过在 MonoDevelop 中调试 .il 进行了测试,但是我无法通过它进行编译。这是来自命令提示符的日志:
任何帮助表示赞赏。
.net - 你能在 mdbg 中看到评估堆栈吗?
假设我有以下 CIL:
然后我ilasm /debug main.il
用来组装 exe 和 pdb 文件以在 mdbg 中使用。
我的问题是,当我在第 3 行时,在add
执行操作之前,我想查看评估堆栈,它会显示我之前加载的两个 int32 常量 40 和 2。
如何在 mdbg 中查看此评估堆栈?
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 进行编译?
winforms - 使用 ilasm 的令牌 MZ 的语法错误
我有一个我正在尝试使用的预构建 dll 程序集。它是一个 winforms 库,当我引用它时,我可以在设计器/代码中使用它而不会出错。当我运行它时,我得到:
程序集生成失败 - 引用的程序集“YARTE”没有强名称
我决定做 ildasm => ilasm 往返,但我一直收到这个错误
我在其他地方没有找到太多帮助,但我认为这不是一个罕见的问题。
.net - 程序集重新编译和程序集加载问题
我有一个可执行文件 (Foo.exe) 和一个库 Bar.dll。两个二进制文件都没有强名称签名。Bar.dll 库依赖于可执行文件,并以如下方式在其清单中指定:
我使用 ildasm 和 ilasm 从 Foo.exe -> msil -> Foo.exe 进行往返。使用 ildasm 进行反编译会生成单个 .il 文件、.res 文件和多个 .resources 文件。我以这种方式重新编译应用程序:
重新编译后,应用程序工作并可以启动。现在的问题是依赖于可执行文件的库 Bar.dll 在重新编译后无法加载它(Foo.exe 可执行文件)。这是融合日志给我的:
现在在重新编译之前,文件加载成功,融合日志中的唯一区别是最后 4 行: