Dotpeek как редактировать dll
Перейти к содержимому

Dotpeek как редактировать dll

  • автор:

Открыть старую dll

Есть старый ассет для Unity — последняя версия была для .NET 3.5 Ассет этот умеет рисовать текстуры на мешах, и делает это хорошо. Мне надо увеличить размер кисти — в оригинале он ограничен слайдером от 1 до 100, что делает невозможным рисование на больших объектах — кисть слишком маленькая. Я думал это поменять в скрипте, но, к сожалению, весь код вынесен в отдельную сборку .dll Я попытался открыть .dll DotPeek и .NetReflector, и оно успешно открывается, я даже без проблем нахожу нужный класс и переменную — brush.size Но что дальше? Кусок кода нужный мне выглядит примерно вот так

this.brush.size = GUI.Slider.value(0,100); 

В идеале бы заменить его на

this.brush.size = GUI.Slider.value(0,10000); 

и это бы скорее всего решило все мои проблемы. Но внутри самого DotPeek и Reflector ничего не меняется. Как поменять одну строчку и сохранить dll обратно? Если я выбираю экспорт проекта, он создает мне новый C# проект, внутри которого находятся и некоторые классы юнити, используемые этой сборкой, и классы самого ассета. И этот проект УЖЕ не компилируется, хотя только что был создан был декомпилером. Не находит часть типов, классов и ссылок на dll. Но как то он же жил без этого, находясь в сборке? Возможно, я стреляю из пушки по воробьям и поменять строчку можно быстрее и проще — но как это сделать? Может быть это можно сделать прямо во время выполнения.

Как запаковать dll файл на С# или отредактировать его?

Я -100лвл программист. Хочу перевести моды Valheim с английского на русский. Мне нужно открыть мод (файл dll), отредактировать английские символы на русские, больше я с ним ничего делать не буду. Пробовал какие-то программы вроде ILSpy и dotPeek, они позволяют только смотреть код dll-файла, а не редактировать его (либо я не знаю как там включить возможность вносить изменения, возможно эти программы вообще для другого предназначены, без понятия). В общем через ILSpy сохранил код в какую-то папку, потом в той папке открыл уже этот код через Visual Studio, нашёл нужную строчку, отредактировал, а дальше как я понял нужно собрать всё обратно в dll. Когда пытаюсь собрать, мне выдают много ошибок, собрать в dll не могу (возможно я вообще нажимая на кнопку собрать как человек на каком-то видео, делаю не то, я не уверен). Есть ли какой-то способ пропустить эти ошибки и собрать игнорируя их? dll ведь вроде как-то работал с этими ошибками. Возможно dll (который я хочу отредактировать) зависим от других dll (BepInEx.dll и т.п.), они по идее при запуске игры подтягиваются (без того же BepInEx моды не поставить), но при сборке у меня этих dll нету и в целом человек другой как-то собрал это.

Может кто-то подсказать как редактировать dll-файлы без этих переупаковок или хотя бы как обратно упаковать dll в Visual Studio игнорируя эти ошибки?

Голосование за лучший ответ

.dll-библиотеки на C# уже компилированы в байт-код. Чтобы из него снова получить C# проект, его нужно декомпилировать. Что там за ошибки, надо смотреть. Если не находит какие-то библиотеки, то их нужно добавить.

ыавыва ываываУченик (95) 5 месяцев назад
300+ ошибок)

Максим Искусственный Интеллект (195956) ыавыва ываыва, там в самом проекте могут быть указаны ссылки на какие-то библиотеки.

Software like DotPeek to decompile and edit DLL’s?

I just got DotPeek and I found it is PERFECT for looking into .dll files. However I can’t edit them at all. Is there free software like DotPeek that also lets me edit the DLL instead of just looking at it? UPDATE: I was able to save all the .cs files in the .dll file separately and edit them in VS (Visual Studio). Now how do I get them back into the .dll file after editing?

35.2k 9 9 gold badges 63 63 silver badges 85 85 bronze badges
asked Mar 21, 2016 at 19:57
301 2 2 gold badges 3 3 silver badges 8 8 bronze badges

4 Answers 4

Simpler method: You can use dnSpy to edit a managed DLL’s bytecode directly using the right click -> «Edit IL instructions» option and save the DLL back from File -> Save Module.

dnSpy: Edit IL Instructions

answered May 17, 2016 at 0:48
Samuel Katz Samuel Katz
24.3k 8 8 gold badges 71 71 silver badges 58 58 bronze badges
Great tool! Thanks for sharing!
Dec 10, 2019 at 9:43
Nice tool! They now have edit method, class and also support exporting as a project!
May 24, 2020 at 10:40

In the latest version of DotPeek you can right click on an assembly in the assembly explorer tree view and click the ‘Export To Project’ option. This will save it as an accessible Visual Studio solution and you can then make changes, debug in run time and recompile to replace the original DLL.

Remember it only provides this option for assemblies and not individual classes within an assembly.

answered Aug 22, 2017 at 2:49
5,935 5 5 gold badges 24 24 silver badges 45 45 bronze badges
This frequently breaks the assembly as it won’t be reconstructed perfectly
Dec 25, 2023 at 1:36

for minor IL code change, use dnSpy to modify the IL code is a easy way. for major .NET code change, use DotPeek to decompile the assembly and export it to a VS project. then you can edit the .cs code and rebuild from the new project.

Как собрать DLL из ранее разобранной и измененными файлами?

Есть старая программа для графики, захотелось обновить ее. Я разбрал dll, заменил в ней файлы (оставил имена на такими же), но вот проблема — собрать.

  • Вопрос задан более года назад
  • 244 просмотра

4 комментария

Средний 4 комментария

HemulGM

Как ты разобрал dll? Что ты вообще под этим понимаешь?

Amir1N @Amir1N Автор вопроса

Hemul GM, декомпилировал в программе dotPeek

Amir1N @Amir1N Автор вопроса

Hemul GM, потом поменял нужные файлы, оставив старые названия

freeExec

либо dotPeek умеет сам собирать обратно, либо ты это напрасно делал.

Решения вопроса 0

Ответы на вопрос 2

vabka

Василий Банников @vabka Куратор тега .NET

Токсичный шарпист

6261aa0e3a180411558339.png

В dotPeek есть волшебная кнопка «Export to project» которая появляется, когда нажимаешь ПКМ на нужной сборке.
После экспорта тебе нужно просто открыть этот проект в Visual Studio и собрать заново, предварительно изменив те файлы, которые тебя интересуют.

Ответ написан более года назад

Комментировать

Нравится 1 Комментировать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *