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