たとえば、私のDLLにBouncy Castleを使用したいとしましょう。私は展開を容易にしたいので、ILMergeを使用してMyDll.dll
とBouncyCastle.Crypto.dll
を組み合わせてMyDllMerged.dll
を生成します。 ILMergeで/internalize
フラグを使用して、クライアントがBouncy Castleを使用しないようにします。ILMerge:内部化されたアセンブリの名前空間の名前を変更しますか?
私の消費者EndUser.exe
も弾む城を使用している場合、彼は「Org.BouncyCastle...TypeFoo
がすでにMyDllMerged.dll
に定義されている」ことがわかります。したがって、彼は運命にあり、その図書館自体を使用することはできません。
ILMergeにアセンブリ内のすべての名前空間の名前を変更し、内部化するように指示することはありますか?またはこの問題を解決する他の方法? (私が好きな別途バージョンと「マージされていない」バージョン「をマージ」。配布する必要がない)
私が従うかどうかわかりません、/ internalizeは、ユーザーが*破棄されていないことを確認するためのものです。彼はTypeFooを見ることができません、それは内部です。 –
@ハンスパッサント:それは私が思ったものですが、私はそれを証明するために簡単な実験をしました。ユーザが 'TypeFoo'を見ることができなくても、実際にはそこにあり、コンパイル時に最終的な名前空間の衝突エラーが発生することが判明しました。 – kizzx2