Nezdá se, že by existoval nativní nástroj Microsoftu, který by tyto funkce sloužil v Linuxu, a v současnosti není zabudován do dot-net-core.
Mono však umožňuje sestavení a rozebrání kódu IL:
Pokyny k instalaci naleznete zde.
To, co hledáte, je:
ilasm - For assembling
monodis - For disassembling
Ty se nacházejí v balíčku mono-utils:
např. Na Debianu 8 jsem provedl následující:
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
Nicméně, pro informaci, pro ty, kteří se snaží vytvářet exporty, Mono nezdá, že by zvládl x64 exportní syntaxi.
Nástroje ildasm i ilasm jsou vytvořeny pomocí CoreCLR z tohoto úložiště:https://github.com/dotnet/coreclr. Zahrnují podobnou funkčnost jako verze dodávané s Windows (bez GUI atd.).
Jsou dodávány balíčky nuget, které je také obsahují (https://www.nuget.org/packages?q=ildasm), ale jsou specifické pro platformu a také vyžadují použití odpovídající verze CoreCLR, takže nejsou jednoduché. konzumovat přes nuget. Nejjednodušší způsob, jak je spustit na vaší platformě, je jednoduše je sestavit ze zdroje z coreclr repo.
Pojďme 'instalovat' ildasm nástroj pomocí souvisejícího balíčku nuget:
- definujte RID (Runtime Identifier)
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
- stáhněte si balíček runtime.{RID}.Microsoft.NETCore.ILDAsm . V mém případě je to:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
- rozbalte jej a rozbalte spustitelný soubor '/runtimes/{RID}/native/ildasm'
- udělte mu oprávnění ke spuštění a zkopírujte jej do složky runtime .NET (volání dotnet --list-runtimes vypsat běhové moduly)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
- vytvořit symbolický odkaz
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
- provozovat ildasmus
./ildasm {path}/project.dll >> {path}/project.il
Stejné kroky platí pro ilasmus.
Jako alternativní způsob zvažte použití nástroje 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
Výstup IL do souboru:
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il