Дотфускатор и типы из объединенных сборок - PullRequest
0 голосов
/ 19 января 2011

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

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

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

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

1 Ответ

3 голосов
/ 19 января 2011

Примечание: я работаю в команде 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 остается открытым.

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

Пожалуйста, дайте мне знать, отличались ли ваши настройки от моих. Мне было бы интересно увидеть ваше точное воспроизведение. Если вы можете, отправьте его на support@preemptive.com и ознакомьтесь с этой веткой. Спасибо.

...