.net-core の ILDASM / ILASM に相当するものはありますか?
具体的には、Linux で動作するものを探しています (したがって、なぜ .net-core なのか)。
ildasm ツールと ilasm ツールはどちらも、https ://github.com/dotnet/coreclr リポジトリの CoreCLR を使用して構築されています。これらには、Windows に同梱されているバージョンと同様の機能が含まれています (sans GUI など)。
それらを含む nuget パッケージも出荷されています ( https://www.nuget.org/packages?q=ildasm ) が、それらはプラットフォーム固有であり、使用する CoreCLR の一致するバージョンも必要とするため、簡単ではありません。ナゲット経由で消費します。プラットフォームでこれらを実行する最も簡単な方法は、coreclr リポジトリのソースからビルドすることです。
Linux でこれらの機能を提供するネイティブの Microsoft ツールはないようで、現在 dot-net-core に組み込まれていません。
ただし、Mono では IL コードのアセンブリと逆アセンブリが可能です。
あなたが探しているものは次のとおりです。
ilasm - For assembling
monodis - For disassembling
これらは、パッケージ mono-utils にあります。
たとえば、Debian 8では次のことを行いました:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian jessie" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
apt-get install mono-devel mono-utils
ただし、参考までに、エクスポートを作成しようとしている人にとっては、Mono は x64 エクスポート構文を処理していないようです。
関連する nuget-package を使用して、ildasmツールを「インストール」しましょう。
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
./ildasm {path}/project.dll >> {path}/project.il
同じ手順がilasmにも適用されます。
別の方法として、dotnet-ildasmツールの使用を検討してください。
# install .net core runtime if required
# sudo apt-get update; \
# sudo apt-get install -y apt-transport-https && \
# sudo apt-get update && \
# sudo apt-get install -y dotnet-runtime-3.0
# find required tool
dotnet tool search ildasm
# output:
# Package ID Latest Version Authors Downloads Verified
# ---------------------------------------------------------------------------
# dotnet-ildasm 0.12.2 pjbgf 100154
# dotasm 1.0.1 DotAsm 434
# install tool
dotnet tool install -g dotnet-ildasm
IL をファイルに出力します。
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il