合并程序集中的Dotfuscator和类型

时间:2011-01-19 15:08:25

标签: .net obfuscation dotfuscator

使用Dotfuscator Professional V4.8(由PreEmptive Solutions提供),是否可以从合并(又称链接)的非主要程序集中将公共类型作为合并程序集的公共类型?

也就是说,假设程序集A具有一个名为Foo的公共类型,而程序集B有一些公共方法,其签名包含类型Foo。在将A和B合并到C中,以B作为主要程序集后,我希望Foo成为C的公共类型。

似乎dotfuscator总是将类型Foo设为C内部。

  • 我尝试过添加 [System.Reflection.Obfuscation(排除=真)] 键入Foo,但似乎有 没有效果。
  • 我不在乎新型会 与原始类型不兼容 组件。

1 个答案:

答案 0 :(得分:3)

注意:我在Dotfuscator团队工作。

这不应该发生。我刚刚做了两个小例子,无法重现你提到的行为。我的基本设置是

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并参考此主题。感谢。