【问题标题】:ILMerge: Rename internalized assemblies' namespaces?ILMerge:重命名内部化程序集的命名空间?
【发布时间】:2011-01-29 00:06:12
【问题描述】:

例如,假设我想在我的 DLL 中使用 Bouncy Castle。因为我想简化部署,所以我使用 ILMerge 将MyDll.dllBouncyCastle.Crypto.dll 组合起来生成MyDllMerged.dll。我在 ILMerge 中使用 /internalize 标志,这样客户就不会使用我的 Bouncy Castle。

如果我的消费者 EndUser.exe 也使用 Bouncy Castle,他会看到“Org.BouncyCastle...TypeFoo 已在 MyDllMerged.dll 中定义”。因此,他注定无法自己使用他的那个图书馆。

除了内部化之外,还有没有告诉 ILMerge 重命名程序集中的所有命名空间?或者有什么其他方法可以解决这个问题? (我希望不必必须分别分发“合并”版本和“未合并”版本。)

【问题讨论】:

  • 不确定我是否遵循,/internalize 是为了确保用户不会注定失败。他看不到 TypeFoo,它是内部的。
  • @Hans Passant:我是这么想的,但我做了一个简单的实验来证明这一点。事实证明,即使用户看不到TypeFoo,它实际上就在那里,并且会在编译过程中导致最终的命名空间冲突错误。

标签: .net ilmerge


【解决方案1】:

一种方法是使用混淆器(SmartAssembly、Dotfuscator 等)仅对生成的程序集的 Org.BouncyCastle 命名空间进行混淆。

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2012-02-28
    • 2014-02-27
    • 2023-03-25
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多