Non sembra che ci sia uno strumento Microsoft nativo che serva queste funzioni su Linux e non è attualmente integrato nel dot-net-core.
Tuttavia, Mono consente l'assemblaggio e il disassemblaggio del codice IL:
Le istruzioni per l'installazione possono essere trovate qui.
Quello che stai cercando è:
ilasm - For assembling
monodis - For disassembling
Questi si trovano nel pacchetto mono-utils:
per esempio. Su Debian 8 ho fatto quanto segue:
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
Tuttavia, per tua informazione, per coloro che tentano di creare esportazioni, Mono non sembra gestire la sintassi di esportazione x64.
Entrambi gli strumenti ildasm e ilasm sono creati con CoreCLR da questo repository:https://github.com/dotnet/coreclr. Includono funzionalità simili alle versioni fornite con Windows (senza GUI, ecc.).
Sono stati forniti pacchetti nuget che li includono anche (https://www.nuget.org/packages?q=ildasm), ma sono specifici della piattaforma e richiedono anche una versione corrispondente di CoreCLR da utilizzare, quindi non sono semplici da consumare tramite nuget. Il modo più semplice per eseguirli sulla tua piattaforma è semplicemente compilarli dal sorgente dal repository coreclr.
'Installiamo' ildasm strumento utilizzando il pacchetto nuget correlato:
- definire RID (Runtime Identifier)
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
- scarica il pacchetto runtime.{RID}.Microsoft.NETCore.ILDAsm . Nel mio caso è:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
- disarchivialo ed estrai il file eseguibile '/runtimes/{RID}/native/ildasm'
- concedere l'autorizzazione all'esecuzione e copiarla nella cartella di runtime .NET (chiamare dotnet --list-runtimes per elencare i tempi di esecuzione)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
- crea collegamento simbolico
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
- esegui ildasm
./ildasm {path}/project.dll >> {path}/project.il
Gli stessi passaggi sono applicabili per ilasm.
In alternativa, considera l'utilizzo dello strumento 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
Invia IL al file:
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il