2011-01-28 21 views
3

たとえば、私のDLLにBouncy Castleを使用したいとしましょう。私は展開を容易にしたいので、ILMergeを使用してMyDll.dllBouncyCastle.Crypto.dllを組み合わせてMyDllMerged.dllを生成します。 ILMergeで/internalizeフラグを使用して、クライアントがBouncy Castleを使用しないようにします。ILMerge:内部化されたアセンブリの名前空間の名前を変更しますか?

私の消費者EndUser.exeも弾む城を使用している場合、彼は「Org.BouncyCastle...TypeFooがすでにMyDllMerged.dllに定義されている」ことがわかります。したがって、彼は運命にあり、その図書館自体を使用することはできません。

ILMergeにアセンブリ内のすべての名前空間の名前を変更し、内部化するように指示することはありますか?またはこの問題を解決する他の方法? (私が好きな別途バージョンと「マージされていない」バージョン「をマージ」。配布する必要がない

+1

私が従うかどうかわかりません、/ internalizeは、ユーザーが*破棄されていないことを確認するためのものです。彼はTypeFooを見ることができません、それは内部です。 –

+0

@ハンスパッサント:それは私が思ったものですが、私はそれを証明するために簡単な実験をしました。ユーザが 'TypeFoo'を見ることができなくても、実際にはそこにあり、コンパイル時に最終的な名前空間の衝突エラーが発生することが判明しました。 – kizzx2

答えて

1

を一つの方法は、単に組織を難読化難読化ツール(SmartAssembly、Dotfuscatorなど)を使用することです。生成されたアセンブリのBouncyCastle名前空間。

+0

妥当と思われる。 – kizzx2

関連する問題