Как запретить переименование всех классов, интерфейса в дотфускаторе

Я слежу за сайтом MSDN https://msdn.microsoft.com/en-us/library/hh977082(v=vs.107).aspx за обфускацию моего кода C# с помощью dotfuscator, который поставляется бесплатно с VS.

В своих проектах на C# я использовал внедрение зависимостей (Castle.Windsor), поэтому после обфускации мое приложение разбилось.

Я думаю о том, чтобы не переименовывать ни один из моих классов и имя интерфейса, включая конструкторы, но пусть их методы, переименование переменных решит проблему. Я пытаюсь установить правило исключения для этого в dotfuscator, но до сих пор не могу этого сделать.

Не могли бы вы сообщить нам, как установить правило исключения, которое запрещает переименование имен классов и интерфейсов вместе с его конструкторами, но позволяет переименовывать их методы и переменные в dotfuscator? Я использую dotfuscator, который поставляется с VS2015.


person Prakash    schedule 21.10.2016    source источник


Ответы (1)


Документация по переименованию для Dotfuscator Community Edition содержит общие инструкции по переименованию. такие исключения. Похоже, в этом случае вы должны добавить исключение типа. Это просто исключит сами типы (и их конструкторы), не исключая никаких методов/полей/свойств. Исключения типов также применяются к интерфейсам.

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

Вы можете использовать кнопку Предварительный просмотр, чтобы увидеть, что будет исключено. (Обратите внимание, что конструкторы не будут отображаться как исключенные, но они действительно будут исключены при сборке.)

Наконец, Документация Pro для исключения по типу содержит больше подробно о том, как работают некоторые из этих функций, так что это тоже может помочь. По большей части функция одинакова в Pro и Community.

Полное раскрытие: я работаю в PreEmptive Solutions.

person Nathan Arthur    schedule 21.10.2016
comment
Спасибо Натан. На самом деле в моем решении есть 5 библиотек и 2 exe-проекта и много классов. Похоже, что с правилом исключения одна проблема исправлена, но появилась другая, поскольку существует множество классов, которые используются несколькими проектами. Похоже, мне нужно найти все классы, которые нужно исключить, поэтому этот метод кажется немного громоздким в моем случае. Итак, я решил использовать режим библиотеки для каждой библиотеки и исполняемого файла. Теперь, кажется, это работает. Подходит ли режим библиотеки для этого случая? - person Prakash; 24.10.2016
comment
Библиотечный режим автоматически исключает все общедоступные элементы в сборке, поэтому, вероятно, это то, что вам нужно для ваших библиотек. Это также будет хорошо для исполняемых файлов, но вы можете в конечном итоге переименовывать меньше, чем хотели бы. Если это так, вы можете отключить режим библиотеки и использовать ручные исключения для этих сборок. - person Nathan Arthur; 24.10.2016