GNU/Linux >> LINUX-Kenntnisse >  >> Linux

.net-core:Entspricht ILDASM / ILASM

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

Linux
  1. „welches“ Äquivalent für gemeinsam genutzte Bibliotheken?

  2. WaitForSingleObject und WaitForMultipleObjects äquivalent in Linux?

  3. Gibt es ein 'git sed' oder ein Äquivalent?

  4. fallocate() Befehlsäquivalent in OS X?

  5. Linux-Äquivalent zu Robocopy?

Verwenden Sie das Task-Manager-Äquivalent in Linux

Was ist ein gutes KDE-Äquivalent zu gnome-do?

Entspricht Sysinternals Process Explorer unter Linux

Linux-Äquivalent zur Windows-Registrierung

Was ist ein modernes Äquivalent zum Rauchen?

Was ist das systemd-Äquivalent von ntsysv?