GNU/Linux >> Linux の 問題 >  >> Linux

.net-core:ILDASM / ILASM と同等

Linux でこれらの機能を提供するネイティブの Microsoft ツールはないようで、現在 dot-net-core に組み込まれていません。

ただし、Mono では IL コードのアセンブリと逆アセンブリが可能です:

インストール手順はこちらにあります。

あなたが探しているのは:

ilasm - For assembling
monodis - For disassembling

これらはパッケージ mono-utils にあります:

例えばDebian 8 では、次のことを行いました:

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

ただし、参考までに、エクスポートを作成しようとしている人にとっては、Mono は x64 エクスポート構文を処理していないようです。


ildasm ツールと ilasm ツールはどちらも、https://github.com/dotnet/coreclr リポジトリの CoreCLR を使用して構築されています。これらには、Windows に同梱されているバージョンと同様の機能が含まれています (sans GUI など)。

それらを含む nuget パッケージも出荷されています (https://www.nuget.org/packages?q=ildasm) が、それらはプラットフォーム固有であり、使用する CoreCLR の一致するバージョンも必要とするため、簡単ではありません。ナゲット経由で消費します。これらをプラットフォームで実行する最も簡単な方法は、coreclr リポジトリのソースからビルドすることです。


ildasm を「インストール」しましょう 関連する nuget-package を使用するツール:

  • RID (ランタイム識別子) を定義する
dotnet --info

# execution result
..
Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64 # <----
..
  • パッケージをダウンロードしますruntime.{RID}.Microsoft.NETCore.ILDAsm .私の場合は次のとおりです:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
  • アーカイブを解凍し、実行可能ファイルを抽出します '/runtimes/{RID}/native/ildasm'
  • 実行権限を付与し、.NET ランタイム フォルダーにコピーします (dotnet --list-runtimes を呼び出します) ランタイムをリストする)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
  • シンボリックリンクを作成
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
  • ildasm を実行
./ildasm {path}/project.dll >> {path}/project.il

ilasm にも同じ手順を適用できます。

別の方法として、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

IL をファイルに出力:

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

dotnet ildasm program.dll -o program.il

Linux
  1. Find In Aixの同等のMaxdepth?

  2. タイムアウトと同等のwaitpid?

  3. LinuxでWaitForSingleObjectとWaitForMultipleObjectsは同等ですか?

  1. Linuxはロボコピーに相当しますか?

  2. Windows レジストリに相当する Linux

  3. cd - cp または mv に相当するものはありますか?

  1. 喫煙に相当する現代的なものは何ですか?

  2. IPv6 に相当する arping

  3. yum は apt-get upgrade と apt-get dist-upgrade に相当しますか?