Dotfuscator и типы из объединенных сборок

Можно ли с помощью Dotfuscator Professional V4.8 (от PreEmptive Solutions) сделать общедоступный тип из объединенной (или связанной) неосновной сборки общедоступным типом объединенной сборки?

То есть предположим, что в сборке A есть общедоступный тип с именем Foo, а в сборке B есть некоторый общедоступный метод с сигнатурой, включающей тип Foo. После слияния A и B в C с B в качестве основной сборки я бы хотел, чтобы Foo был общедоступным типом C.

Кажется, что dotfuscator всегда делает тип Foo внутренним для C.

  • Я попытался добавить [System.Reflection.Obfuscation(Exclude=true)] для ввода Foo, но, похоже, это не дало никакого эффекта.
  • Меня не волнует, что новый тип будет несовместим с типом из оригинальной сборки.

person mpeac    schedule 19.01.2011    source источник


Ответы (1)


Примечание: я работаю в команде Dotfuscator.

Этого не должно быть. Я только что сделал 2 небольших примера и не смог воспроизвести упомянутое вами поведение. Мои основные настройки были

Tester.exe (Primary Assembly, both merged into out.exe)
  References Library
  public class Program { public void Method(Foo foo) {} }
Library.dll
  public class Foo {}

а также

Tester.exe (Primary Assembly, all 3 merged into out.exe)
  References LibraryA & LibraryB
LibraryA.dll
  public class Foo {}
LibraryB.dll
  References LibraryA
  public class C { public void Method(int x, Foo foo) {} }

В обоих случаях Foo остается общедоступным.

Поведение, которое вы описываете, часто является тем, чего хотят пользователи, но мы сознательно не меняем какие-либо уровни доступности из-за слияния.

Пожалуйста, дайте мне знать, если ваша установка чем-то отличается от моей. Мне было бы интересно увидеть вашу точную копию. Если вы можете, отправьте его по адресу [email protected] и укажите ссылку на эту ветку. Спасибо.

person David Poeschl    schedule 19.01.2011
comment
Оказывается, в нашей среде сборки после dotfuscator выполняется еще одна скрытая задача MSBuild, которая делает все объединенные типы закрытыми. Спасибо команде dotfuscator за оперативную и полезную поддержку. В частности, они предложили использовать опцию -e, чтобы dotfuscator оставил сгенерированный IL-файл для проверки. - person mpeac; 25.01.2011