Es scheint kein natives Microsoft-Tool zu geben, das diese Funktionen unter Linux bereitstellt, und es ist derzeit nicht in dot-net-core integriert.
Mono erlaubt jedoch die Assemblierung und Disassemblierung von IL-Code:
Installationsanweisungen finden Sie hier.
Was Sie suchen, ist:
ilasm - For assembling
monodis - For disassembling
Diese befinden sich im Paket mono-utils:
z.B. Unter Debian 8 habe ich folgendes gemacht:
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
Für diejenigen, die versuchen, Exporte zu erstellen, scheint Mono jedoch die x64-Exportsyntax nicht zu verarbeiten.
Sowohl das ildasm- als auch das ilasm-Tool werden mit CoreCLR aus diesem Repo erstellt:https://github.com/dotnet/coreclr. Sie enthalten ähnliche Funktionen wie die mit Windows gelieferten Versionen (ohne GUI usw.).
Es werden Nuget-Pakete ausgeliefert, die sie ebenfalls enthalten (https://www.nuget.org/packages?q=ildasm), aber sie sind plattformspezifisch und erfordern außerdem eine passende Version von CoreCLR, um sie zu verwenden, sodass sie nicht einfach sind über nuget zu konsumieren. Der einfachste Weg, diese auf Ihrer Plattform auszuführen, besteht darin, sie einfach aus dem Quellcode des coreclr-Repos zu erstellen.
Lassen Sie uns ildasm 'installieren' Tool, das das zugehörige Nuget-Paket verwendet:
- RID (Runtime Identifier) definieren
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
- laden Sie das Paket runtime.{RID}.Microsoft.NETCore.ILDAsm herunter . In meinem Fall ist es:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
- Entpacken Sie es und extrahieren Sie die ausführbare Datei '/runtimes/{RID}/native/ildasm'
- Geben Sie ihm die Ausführungsberechtigung und kopieren Sie es in den .NET-Laufzeitordner (rufen Sie dotnet --list-runtimes auf um Laufzeiten aufzulisten)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
- symlink erstellen
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
- ildasm ausführen
./ildasm {path}/project.dll >> {path}/project.il
Die gleichen Schritte gelten für ilasm.
Alternativ können Sie das Tool dotnet-ildasm verwenden:
# 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 in Datei ausgeben:
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il