2016-10-21 3 views
2

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

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

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

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

ответ

1

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

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

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

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

Полное раскрытие информации: Я работаю в PreEmptive Solutions.

+0

Спасибо Nathan. На самом деле в моем решении и во многих классах есть 5 библиотек и 2 проекта exe. Похоже, что с правилом исключения исправляется некоторая проблема, но появляется другая, так как существует множество классов, которые используются несколькими проектами. Похоже, мне нужно найти все классы, которые нужно исключить, поэтому этот метод кажется немного громоздким в моем случае. Итак, я решил использовать «Режим библиотеки» для каждой библиотеки и exe. Теперь, похоже, он работает. «Режим библиотеки» подходит для этого случая? – Prakash

+0

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