我有一组多个程序集(一个程序集将用作API,它取决于其他程序集)。 我想将所有程序集合并为一个程序集,但要防止从外部可见除API之外的所有程序集。

然后,我将使用Xenocode混淆此程序集。 从我所看到的,用Xenocode内部化程序集是不可能的。

我已经从Microsoft看过ILMerge,但是无法确定它是否可以满足我的要求。 http://research.microsoft.com/~mbarnett/ILMerge.aspx

===============>>#1 票数:2

我已经使用了Microsoft的ILMerge将DLL内部化为一个组装的库。 有一个使用ILMerge的有用GUI,称为NuGenUnify。 你可以在这里找到它。

===============>>#2 票数:1

建议您查看MSDN上的InternalsVisibleTo属性。

您可以将所有程序集(API程序集除外)中的所有内容标记为internal而不是public ,然后将它们重新显示为您的API程序集。

完成此操作后,使用ILMerge应该会为您提供一个仅具有可见API类的程序集。

===============>>#3 票数:1

ILMerge存在一些问题 ,但是我认为,如果添加优化+合并+模糊处理,很可能会创建一个非常复杂的情况,而带来的好处却很少。

为什么不只有一个程序集,而只公开您的API?

如果您始终将它们作为单个程序集分发,则没有理由不只是那样编译它们。 您将从编译器优化中获得更多收益,并且编译起来也将更快。

===============>>#4 票数:1 已采纳

我知道Xenocode可以将程序集合并为一个,但是我不确定是否会将其他非主程序集内部化。

我发现ILMerge中的/ internalize开关可以“内部化”除主程序集以外的所有程序集。 非常有用!

  ask by Vincent translate from so

未解决问题?本站智能推荐:

13回复

如何在.NET中启用程序集绑定失败日志记录(Fusion)

如何在.NET中启用程序集绑定失败日志记录(Fusion)?
3回复

除了检查“系统”的名称以外,是否可以通过其他方式检查.NET中的程序集是否为框架程序集?

由于任何人都可以命名以“ System”开头的程序集,因此检查“ System”不是令人满意的解决方案。 或者,如果不可能,如何检查装配中的模块?
1回复

有没有办法从.Net程序集中列出方法的所有调用和硬编码字符串参数?

例如,假设在我的程序集中,在名称空间A,类B中,有一个带有以下签名的实例方法: 从程序集中的多个位置多次调用此方法。 我希望能够构建此方法的所有调用列表以及someString / someOtherString的值(假设它们是硬编码的)。 换句话说,我喜欢提取一个调用列表,如下
2回复

Assembly.LoadFrom之后的ResolveEventHandler

我使用Assembly.LoadFrom()加载程序集,因为程序集位于与Application Base目录不同的路径中。 我从该程序集中使用了一个Type而没有任何问题: 但是,当我尝试从另一个方法中使用此程序集中的Type时,会出现问题,如下所示: sAssembly
1回复

Windows Forms .NET中的强命名程序集

好的,我在这里阅读了有关强命名程序集的所有问题,只想澄清一些问题。 不过,首先,从我读过的内容来看,除了GAC之外,强大的命名程序集还可以防止恶意的第三方更改和模拟您的代码。 能够链接到一些在强命名程序集之前发生的这种欺骗的真实示例,将是很棒的。 如果不考虑安全性或GAC,似乎仍然
1回复

.NET和共享的DLL

我有4个使用同一组API DLL的.Net应用程序。 所有这些文件都放在我们提供给员工的闪存驱动器上。 是否有任何方法可以在闪存驱动器上为所有共享DLL提供共享的DLL位置,所以在我们进行更新时,我们不必为每个应用程序复制DLL。 我已经阅读了有关全局程序集的信息,但是如果有新PC或它们在
1回复

动态加载.NET程序集

我正在编写程序,并且希望该程序支持插件。 我创建了程序必须实现的接口。 我正在使用主程序中的以下代码来调用插件: 一切正常,我可以访问我的公开属性,除了一个我无法解决的问题。 在我的插件中,我使用以下代码公开属性: 好的,所以我从主程序设置了此属性,一切正常。 除了一段时
2回复

.Net的Assembly类是否存储变量?

好的,这是故事。 我有一个由[Assembly].LoadFrom()启动的程序集数组,该[Assembly].LoadFrom()加载许多DLL。 初始化后,将调用一个名为InitMain的方法(来自DLL!),该方法在此方法之外设置了许多变量,如下所示: 如果我稍后在主应用程
2回复

找不到.NET方法错误

当我启动我的应用程序时,我收到以下错误: 有谁知道是什么原因造成的? 我试过修复我的.NET安装。 注意:此错误仅发生在一台计算机上。 在其他每台机器上它工作正常,这让我认为.NET程序集的内容已损坏。 几天前它在破碎的机器上运行良好。 错误消息证明:
2回复

调试动态加载程序集

我正在调试一个用Assembly.Load(Byte [])动态加载的程序集,但是我遇到了一些问题。 首先,我无法移动Visual Studio 2010中的黄色箭头以进入其他代码行,并且我在尝试快速观察时也会出现异常(“无法在对象实例上找到该方法。”)来自第三方库的对象(例如,来自Inf