Существует ли эквивалент ILDASM/ILASM для .net-core?.net-core: Эквивалент ILDASM/ILASM
В частности, я ищу что-то, что работает на Linux (следовательно, почему .net-core).
Существует ли эквивалент ILDASM/ILASM для .net-core?.net-core: Эквивалент ILDASM/ILASM
В частности, я ищу что-то, что работает на Linux (следовательно, почему .net-core).
Оба инструмента ildasm и ilasm построены с использованием CoreCLR из этого репо: https://github.com/dotnet/coreclr. Они включают в себя аналогичные функции, такие как версии, поставляемые с Windows (без GUI и т. Д.).
Есть пакеты nuget, которые включают их также (https://www.nuget.org/packages?q=ildasm), но они специфичны для платформы, а также требуют использования подходящей версии CoreCLR, поэтому они не просто потребляют через nuget. Самый простой способ запустить их на вашей платформе - это просто создать их из источника из репозитория coreclr.
Не существует встроенного инструмента Microsoft, который обслуживает эти функции в Linux, и в настоящее время он не встроен в dot-net-core.
Однако Mono позволяет сборку и разборку IL код:
Installation Instructions can be found here.
То, что вы ищете:
ilasm - For assembling
monodis - For disassembling
Они находятся в пакете моно-утилитами:
eg В 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
Однако FYI, для тех, кто пытается создать экспорт, Mono не представляется обрабатывать синтаксис экспорта x64.
Стоит отметить, что ['ikdasm' лучше подходит для разборки, чем' monodis'] (http://stackoverflow.com/q/26373496/21501). –
Это гораздо лучший ответ, чем мой. Спасибо за публикацию. Я не уверен, как я пропустил coreCLR, что может решить некоторые проблемы. – Doug
Есть ли версия этих инструментов, уже скомпилированных или я создаю репозиторий для их получения? –
@JavierHolguera, как я уже упоминал выше, вы можете загружать и использовать их из пакетов nuget, но вам нужно загрузить правильный индивидуальный пакет nuget для вашей операционной системы. –