@Drovosek01

Как узнать параметры с которыми скомпилирована или собрана dll на C#?

Есть dll изначально собранная под архитектуру ARM64 для работы в macOS на Apple Silicon.

Необходимо поправить код в dll.
Делаю это через dnSpy.
При сохранении dll даже не измененного, с дефолтными параметрами, которые, предлагает dnSpy - появляется ошибка dnlib.DotNet.Writer.ModuleWriterException: Invalid section RVA
Произошло исключение dnlib.DotNet.Writer.ModuleWriterException: Invalid section RVA
   at dnlib.DotNet.Writer.NativeModuleWriter.WriteFile()
   at dnlib.DotNet.Writer.NativeModuleWriter.Write()
   at dnlib.DotNet.Writer.NativeModuleWriter.WriteImpl()
   at dnlib.DotNet.Writer.ModuleWriterBase.Write(Stream dest)
   at dnlib.DotNet.Writer.ModuleWriterBase.Write(String fileName)
   at dnlib.DotNet.ModuleDefMD.NativeWrite(String filename, NativeModuleWriterOptions options)
   at dnSpy.AsmEditor.SaveModule.ModuleSaver.Save(SaveModuleOptionsVM vm) in D:\a\dnSpy\dnSpy\Extensions\dnSpy.AsmEditor\SaveModule\ModuleSaver.cs:line 187
   at dnSpy.AsmEditor.SaveModule.ModuleSaver.SaveAll() in D:\a\dnSpy\dnSpy\Extensions\dnSpy.AsmEditor\SaveModule\ModuleSaver.cs:line 151
   at dnSpy.AsmEditor.SaveModule.SaveMultiModuleVM.SaveAsync(SaveOptionsVM[] mods) in D:\a\dnSpy\dnSpy\Extensions\dnSpy.AsmEditor\SaveModule\SaveMultiModuleVM.cs:line 250

А dnSpy предлагает собирать для arm64 Apple Silicon
spoiler
65cf78c810d13502206241.png


Сохраняю это все дело в Windows 10 на процессоре AMD. с dnSpy 6.5.0

Подозреваю, что проблему можно победить правильно подобрав параметры компиляции/сборки, чтобы они были максимально приближены к оригиналу.

Как узнать оригинальные параметры компиляции/сборки dll?
Вот пример такого файла - скачать
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C#
Очень похожий стек в этой issue (которая была создана по мотивам этой), предлагаю отслеживать её.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
Drovosek01,
dll изначально собранная под архитектуру ARM64
.. кстати, это еще не бинарная компиляция, иначе вы бы НЕ смогли декомпилировать..
если dnSpy создает проект (с файлами типа *.prj/*.sln) можно использовать их как исходники, но пересборку выполнять на целевой системе. если не ошибаюсь, visual studio for osx не соизмеримо легче виндовой..

ps если https://github.com/JoshClose/CsvHelper .. все таки рекомендую пересобрать на целевой платформе, с нужными правками ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы