Очистка кода

Очистка кода

 

Данная функциональность предназначена для уменьшения размера сборок (и как следствие времени загрузки), за счет удаления из сборок неиспользуемых данных. Существуют следующие виды очистки:

  • Очистка классов
    Удаляет все не используемые классы.
  • Очистка методов
    Удаляет все не используемые методы.
  • Очистка полей
    Удаляет все не используемые поля.


Настройка параметров очистки кода

 

Внешний вид вкладки Очистка кода (с пометками)

Опции:

  • Разрешить очитку кода - Включение режима очистки кода при обфускации;
  • Не очищать открытые объекты - Исключает из процесса очистки открытые (public) классы, методы и т.д. ;
    Например:
    // Исходный код
    public class Class1
    {
        public void Function1(string param1) {}
        protected void Function2() {string param2}
        internal void Function3() {string param3}
    }
    
    // После очистки с опцией Не очищать открытые объекты
    public class Class1
    {
        public void Function1(string param1) {}
    }
    
  • Сборка - для которой будут настраиваться опции;
  • Очистка классов - данная опция включает для сборки режим очистки классов;
  • Очистка методов - данная опция включает для сборки режим очистки методов;
  • Очистка полей - данная опция включает для сборки режим очистки полей;
  • Таблица исключений - вкладка на которой настраиваются исключения при очистке;

  • Дерево исключений - Используя данное дерево можно с помощью контекстного меню пометить как не очищаемые требуемые классы, методы, и т.д.;
  • Список выбранных исключений - В списке отображаются исключенные (не очищаемые) элементы;
  • Исключить - Исключает выделенный элемент, в результате чего, в список исключений добавится новая запись;
  • Удалить - Удаляет элемент из списка исключений;


Исключение при очистке - из исходного кода

 

Задавать исключения можно так же непосредственно в исходном коде (C#, VB и т.д.).

Для этого нужно использовать атрибут System.Reflection.Obfuscation

 

Например:


//
// Исключить из очистки метод 'Function2'
//
public class Class1
{
    public void Function1(stirng message) { }

    [System.Reflection.Obfuscation(Exclude = true, Feature = "Clean")]
    protected void Function2(string license_key ) {}

    internal void Function3(int number) { }
}

//
// Исключить из очистки весь класс 'Class1'
//
[System.Reflection.Obfuscation(Exclude = true, 
ApplyToMembers = true, Feature = "Clean")]
public class Class1
{
    public void Function1(stirng message) { }

    protected void Function2(string license_key ) {}

    internal void Function3(int number) { }
}



     

     

     
    15.11.2008
     
     
     
     
    10.12  .NET Reactor
    15.11  n
    15.11  C# ClickOnce
     
    01.08  Task Context
    01.08  XLSX в Mono