GNU/Linux >> Belajar Linux >  >> Linux

.net-core:Setara dengan ILDASM / ILASM

Tampaknya tidak ada alat Microsoft asli yang melayani fungsi-fungsi ini di Linux dan saat ini tidak dibangun ke dalam dot-net-core.

Namun, Mono mengizinkan perakitan dan pembongkaran kode IL:

Petunjuk Instalasi dapat ditemukan di sini.

Yang Anda cari adalah:

ilasm - For assembling
monodis - For disassembling

Ini ditemukan dalam paket mono-utils:

misalnya Pada Debian 8 saya melakukan hal berikut:

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

Namun, FYI, bagi mereka yang mencoba membuat ekspor, Mono tampaknya tidak menangani sintaks ekspor x64.


Alat ildasm dan ilasm dibangun dengan CoreCLR dari repo ini:https://github.com/dotnet/coreclr. Mereka menyertakan fungsi yang serupa dengan versi yang disertakan dengan Windows (tanpa GUI, dll.).

Ada paket nuget yang dikirimkan yang menyertakannya juga (https://www.nuget.org/packages?q=ildasm), tetapi mereka khusus platform dan juga memerlukan versi CoreCLR yang cocok untuk digunakan, sehingga tidak langsung untuk dikonsumsi melalui nuget. Cara termudah untuk menjalankan ini di platform Anda adalah dengan membangunnya dari sumber dari repo coreclr.


Ayo 'pasang' ildasm alat menggunakan nuget-package terkait:

  • menentukan RID (Runtime Identifier)
dotnet --info

# execution result
..
Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64 # <----
..
  • unduh paket runtime.{RID}.Microsoft.NETCore.ILDAsm . Untuk kasus saya ini adalah:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
  • buka arsip dan ekstrak file yang dapat dieksekusi '/runtimes/{RID}/native/ildasm'
  • berikan izin eksekusi dan salin ke folder .NET runtime (panggil dotnet --list-runtimes untuk membuat daftar runtime)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
  • buat symlink
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
  • jalankan ildasm
./ildasm {path}/project.dll >> {path}/project.il

Langkah yang sama berlaku untuk ilasm.

Sebagai alternatif, pertimbangkan untuk menggunakan alat 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

Keluarkan IL ke file:

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

dotnet ildasm program.dll -o program.il

Linux
  1. Maxdepth Setara Untuk Temukan Di Aix?

  2. WaitForSingleObject dan WaitForMultipleObjects setara di Linux?

  3. Apakah ada 'git sed' atau yang setara?

  1. perintah fallocate() yang setara di OS X?

  2. Linux setara dengan robocopy?

  3. Linux setara dengan Windows Registry

  1. Windows setara dengan xargs?

  2. Monitor Proses setara untuk Linux?

  3. arping setara untuk IPv6