3
例如,假設我想在我的DLL中使用Bouncy Castle。由於我想簡化部署,我使用ILMerge將MyDll.dll
和BouncyCastle.Crypto.dll
結合起來生成MyDllMerged.dll
。我使用ILMerge中的/internalize
標誌,以便客戶端不使用我的Bouncy Castle。ILMerge:重命名內部化程序集的名稱空間?
如果我的消費者EndUser.exe
也使用Bouncy Castle,他會看到「Org.BouncyCastle...TypeFoo
已在MyDllMerged.dll
中定義」。因此,他註定不能自己使用他的圖書館。
是否有反正告訴ILMerge重命名程序集中的所有命名空間,除了內化它?或者有其他解決這個問題的方法嗎? (我想不有分發「合併」版本和「未合併」獨立版本)。
不知道我跟着/ internalize在那裏,以確保用戶*不*註定。他看不到TypeFoo,它是內部的。 – 2011-01-28 16:42:01
@Hans Passant:這就是我的想法,但我做了一個簡單的實驗來證明它。事實證明,即使用戶看不到'TypeFoo',它也是_actually_,並且在編譯期間會導致最終的命名空間碰撞錯誤。 – kizzx2 2011-01-28 17:50:17