CSharpCodeProvider после Обфускатора - PullRequest
3 голосов
/ 31 января 2012

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

Ошибка: CS0234

Тип или имя пространства имен «Объекты» не существует в пространстве имен «TestProgram» (отсутствует ссылка на сборку?)

Ошибка: CS0246

Не удалось найти имя типа или пространства имен "Scripter" (отсутствует директива using или ссылка на сборку?)

Знаете ли вы, если есть способ исправитьЭто?Я пробовал много обфускаторов, и похоже, что все делает то же самое с моим сценаристом.

1 Ответ

2 голосов
/ 31 января 2012

Скорее всего, вам не нужно запутывать открытые типы, к которым пытаются обращаться ваши "сценарии".

Это можно сделать с помощью большинства лучших обфускаторов, включив соответствующий атрибут ( ObfuscationAttribute ) с помощьюсвойство Исключить , установленное на true для типов или методов по мере необходимости: [Obfuscation(Exclude=true)]


Редактировать:

Вы быиспользуйте этот атрибут, декорируя соответствующие типы по мере необходимости, например:

[Obfuscation(Exclude=true, ApplyToMembers=true)]
public class Objects
{
    // ... 

Это приведет к тому, что большинство обфускаторов (хотя некоторые требуют настройки, чтобы обратить внимание на этот атрибут) не запутывали тип.Некоторые обфускаторы запутывают внутренних участников, но не запутывают публичный API.Это зависит от того, какой именно инструмент вы используете, и я бы порекомендовал ознакомиться с их документацией.

...