使用Dotfuscator Professional V4.8(由PreEmptive Solutions提供),是否可以从合并(又称链接)的非主要程序集中将公共类型作为合并程序集的公共类型?
也就是说,假设程序集A具有一个名为Foo的公共类型,而程序集B有一些公共方法,其签名包含类型Foo。在将A和B合并到C中,以B作为主要程序集后,我希望Foo成为C的公共类型。
似乎dotfuscator总是将类型Foo设为C内部。
答案 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并参考此主题。感谢。