GNU/Linux >> Tutoriels Linux >  >> Linux

.net-core :Équivalent de ILDASM / ILASM

Il ne semble pas qu'il existe un outil Microsoft natif qui assure ces fonctions sous Linux et il n'est pas actuellement intégré au dot-net-core.

Cependant, Mono permet le montage et le démontage du code IL :

Les instructions d'installation peuvent être trouvées ici.

Ce que vous recherchez est :

ilasm - For assembling
monodis - For disassembling

Ceux-ci se trouvent dans le package mono-utils :

par exemple. Sur Debian 8, j'ai fait ce qui suit :

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

Cependant, pour votre information, pour ceux qui essaient de créer des exportations, Mono ne semble pas gérer la syntaxe d'exportation x64.


Les outils ildasm et ilasm sont construits avec CoreCLR à partir de ce référentiel :https://github.com/dotnet/coreclr. Ils incluent des fonctionnalités similaires à celles des versions livrées avec Windows (sans interface graphique, etc.).

Il existe des packages nuget livrés qui les incluent également (https://www.nuget.org/packages?q=ildasm), mais ils sont spécifiques à la plate-forme et nécessitent également une version correspondante de CoreCLR à utiliser, ils ne sont donc pas simples. à consommer via nuget. Le moyen le plus simple de les exécuter sur votre plate-forme consiste simplement à les créer à partir de la source à partir du dépôt coreclr.


"Installons" ildasm outil utilisant le package de nuget associé :

  • définir RID (Runtime Identifier)
dotnet --info

# execution result
..
Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64 # <----
..
  • télécharger le package runtime.{RID}.Microsoft.NETCore.ILDAsm . Pour mon cas c'est :runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
  • désarchivez-le et extrayez le fichier exécutable '/runtimes/{RID}/native/ildasm'
  • accordez-lui l'autorisation d'exécution et copiez-le dans le dossier d'exécution .NET (appelez dotnet --list-runtimes pour lister les runtimes)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
  • créer un lien symbolique
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
  • exécuter ildasm
./ildasm {path}/project.dll >> {path}/project.il

Les mêmes étapes sont applicables pour ilasm.

En guise d'alternative, envisagez d'utiliser l'outil 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

Sortie IL vers fichier :

# go to project folder
cd ../project/bin/Debug/netx.x

dotnet ildasm program.dll -o program.il

Linux
  1. "quel" équivalent pour les bibliothèques partagées ?

  2. Équivalent Linux du registre Windows

  3. Windows équivalent à xargs ?

  4. équivalent d'arping pour IPv6

  5. yum équivalent à apt-get upgrade vs apt-get dist-upgrade ?

Utiliser l'équivalent du gestionnaire de tâches sous Linux

WaitForSingleObject et WaitForMultipleObjects équivalent sous Linux ?

Existe-t-il un "git sed" ou équivalent ?

Qu'est-ce qu'un bon équivalent KDE à gnome-do ?

Équivalent à Sysinternals Process Explorer sous Linux

Quel est l'équivalent systemd de ntsysv ?