No parece que haya una herramienta nativa de Microsoft que cumpla estas funciones en Linux y actualmente no está integrada en dot-net-core.
Sin embargo, Mono permite ensamblar y desensamblar código IL:
Las instrucciones de instalación se pueden encontrar aquí.
Lo que estás buscando es:
ilasm - For assembling
monodis - For disassembling
Estos se encuentran en el paquete mono-utils:
p.ej. En Debian 8 hice lo siguiente:
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
Sin embargo, FYI, para aquellos que intentan crear exportaciones, Mono no parece manejar la sintaxis de exportación x64.
Tanto las herramientas ildasm como ilasm se construyen con CoreCLR desde este repositorio:https://github.com/dotnet/coreclr. Incluyen una funcionalidad similar a las versiones enviadas con Windows (sin GUI, etc.).
Hay paquetes nuget enviados que también los incluyen (https://www.nuget.org/packages?q=ildasm), pero son específicos de la plataforma y también requieren una versión correspondiente de CoreCLR para usar, por lo que no son sencillos. para consumir a través de nuget. La forma más fácil de ejecutarlos en su plataforma es compilarlos desde el origen del repositorio de coreclr.
Vamos a 'instalar' ildasm herramienta usando el paquete nuget relacionado:
- definir RID (identificador de tiempo de ejecución)
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
- descargue el paquete runtime.{RID}.Microsoft.NETCore.ILDAsm . Para mi caso es:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
- desarchivarlo y extraer el archivo ejecutable '/runtimes/{RID}/native/ildasm'
- concédale permiso de ejecución y cópielo en la carpeta de tiempo de ejecución de .NET (llame a dotnet --list-runtimes para enumerar los tiempos de ejecución)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
- crear enlace simbólico
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
- ejecutar ildasm
./ildasm {path}/project.dll >> {path}/project.il
Los mismos pasos son aplicables para ilasm.
Como una forma alternativa, considere usar la herramienta 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
Salida IL a archivo:
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il