.NET 6+ 的 ildasm/ilasm 工具在哪裡?

🏛️ 365bet体育在线开户 ⏳ 2025-10-19 18:53:22 👤 admin 👁️ 1542 💎 997
.NET 6+ 的 ildasm/ilasm 工具在哪裡?

在某些特殊情境下我們會想將 .NET dll/exe 反組譯成 CIL,或許是想研究 .NET 編譯行為,或許是要魔改無原始碼程式搞暴力破解。總之,.NET Framework 時代有 IL 反組譯及組譯工具 - ildasm.exe、ilasm.exe,安裝 Visual Studio 後開個 Developer Command Prompt 就能使用(位於 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools 之類的目錄)。

不過,到 .NET Core / .NET 6+ 時代,要去哪裡找 .NET 6 用的 ildasm 跟 ilasm?好問題。 (LINQPad 有反組譯 IL 功能,但只限程式碼片段)

答案是 - 需透用 NuGet 下載安裝。

我找到兩種做法:

參照 Microsoft.NETCore.ILDAsm 或 Microsoft.NETCore.ILAsm,編譯時 NuGet 將會依作業系統下載對映版本放在 ~/.nuget/packages/runtime-{Runtime Identifier, RID}/n.0.0/runtimes//native/ildasm: dotnet add package Microsoft.NETCore.ILDAsm

dotnet add package Microsoft.NETCore.ILAsm

依作業系統別參照 runtime.win-x64.Microsoft.NETCore.ILDAsm/ILAdsm,編譯後 ildasm 或 ilasm 會放在 bin/Debug/net6.0/runtimes//native # Windows x64

dotnet add package runtime.win-x64.Microsoft.NETCore.ILDAsm

# macOS

dotnet add package runtime.osx-arm64.Microsoft.NETCore.ILDAsm

# Linux x64

dotnet add package runtime.linux-x64.Microsoft.NETCore.ILDAsm

試了一下,ildasm/ilasm 也跨平台了,在 Linux 嘛 A 通!

有趣的是,跨平台後的 ildasm/ilasm 依然原汁原味沿用 .NET Framework 版參數語法,使用 /OUT、/UTF8 而非改走 POSIX 參數語法慣例,猜想是舊版程式移植改寫而非重寫,遵循 If it works, don't touch it 鐵律吧! 呵。

Tips of how to install ildasm and ilasm tool for .NET 6+.

相关掠夺

365bet在线体育投注网
读书郎电话手表怎么样?好用吗?

读书郎电话手表怎么样?好用吗?

🗓️ 08-01 👁️ 208
365bet在线体育投注网
人大重阳网 参考消息整版:澄清对金砖机制的十大误解

人大重阳网 参考消息整版:澄清对金砖机制的十大误解

🗓️ 09-21 👁️ 4872