Открыть старую 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. Но как то он же жил без этого, находясь в сборке?

Возможно, я стреляю из пушки по воробьям и поменять строчку можно быстрее и проще - но как это сделать? Может быть это можно сделать прямо во время выполнения...


Ответы (1 шт):

Автор решения: Quercus

Можно попробовать использовать dnSpy: https://github.com/dnSpy/dnSpy

Загрузить сборку, найти нужный метод и, попробовать его поменять в редакторе кода и скомпилировать.

Если не получится, то есть вариант внести правки непосредственно в IL код, но это посложнее будет.

Не забудьте после исправлений сохранить модуль.

→ Ссылка