私はオープンソースを公開しようとしているlibを書いています。これはMS Unityを使用します。ユニティDLL(Microsoft.Practices.Unity.dll & Microsoft.Practices.ServiceLocation.dll)をILMergeを使用してOSライブラリにマージする必要があります。オープンソース配布のために別々のDLLを1つのアセンブリにマージする
答えて
私はlibとMS Unityをマージしません。
MS UnityはMs-PLライセンスの下にあるので、私はMS Unityアセンブリの良いバージョンをlibと共に出荷します。 the license of MS Unityとreadme.txt
ファイルを含めることを忘れないでください。
優秀、ありがとうございます。 –
NuGetパッケージマネージャを使ってUnityの正確なバージョンを取得する方法を説明することをお勧めします。エンドユーザーの頭痛を軽減するはずです。
また、互換性のあるUnityバージョンリストを指定してUnityダウンロードページへのリンクを提供します。
サードパーティのライブラリを自分のものにマージすることはお勧めしません。 理由は簡単です。これを行うことで、ユーザーはこれらのサードパーティ製ライブラリの別のバージョン(またはおそらくカスタム)を使用することを制限します。
解決策へのNuGetパッケージの参照が含まれている限り、これらのDLLをライブラリと共に出荷することをお勧めします(オープンソースライブラリの場合)。 これはサードパーティのライブラリにはおすすめですが、IoCコンテナ、ロガー、一般的に使用されているその他の懸念事項については、一般的にユーザーに柔軟性を提供したいと考えています。
あなたのライブラリが多くの人に使用されることになっている場合は、誰かが別のコンテナを使用することを好むだろうと予測することができます。 恐らく、これらの他のコンテナは、ユーザが自分の使っているものをあきらめて、代わりにUnityを使用したり、2つのコンテナをサポートしたりすることができます。 これらの依存関係を抽象化し、潜在的なユーザーに選択肢を与えることをお勧めします。
たとえば、あなたのライブラリでコンテナから必要なすべてのメソッド(解決、登録など)を使ってインタフェースIContainerを定義することができます。別の別のDLLを実装することもできます:SuperLibrary.Container.Unity.dllこれは、Unityを介して動作する実装IContainerを含みます。 私のプロジェクトであなたのライブラリと一緒にAutofacを使いたいのであれば、私自身のSuperLibrary.Container.Autofac.dllを作成することができます。あなたのIContainerの実装には1つか2つのファイルが含まれていて、私のAutofacを使用し、Unityについて何も知る必要はありません:)
あなたも、あなたが十分に良くなることを決めるならば、Autofac、Unity、Unity2、 StructureMap、Spring.NETなどを使用して、使用するライブラリの選択肢をユーザーに提供します。
- 1. 別々のビデオファイルを1つのファイルサイズにマージする
- 2. 別のDLLに1つのDLLを埋め込むC#
- 3. .NETでの.dllアセンブリのマージ
- 4. インポートしたDLLを個別に解決するために別々のDLLを入手できますか?
- 5. 異なるタイプの別々の2つのリストを別のタイプの1つの新しいリストにマージする
- 6. Mule ESB Dataweaveで1つの配列を別の配列にマージする
- 7. 複数のアセンブリを1つにマージする方法は?
- 8. 2つの別々のレイアウトを1つのレイアウトに含めるには
- 9. 作成したDLLとインポートライブラリを別々のディレクトリに配置する
- 10. オープンソースのVisual Studioプロジェクト配布のナイトメール
- 11. は、1つのデータセット内の別々の正規分布を認識します
- 12. 2つの別々のcsvで2つの列にマッチして1つの列をマージする
- 13. DLL System.Data.SQLite.dllを1つのアセンブリにマージした後で読み込むことができません
- 14. sqlite androidで2つの別々の列データを1つの列にマージする方法
- 15. whileループから配列を1つの配列にマージする
- 16. SystemVerilog:2つの配列を1つの配列にマージするには?
- 17. 別のファイルのファイルを1つのファイルコードにマージする方法
- 18. 2つの別々のブランチをマージするsvn
- 19. Ruby 1つに2つの配列をマージする
- 20. VS 2015 C++再配布可能なDLLは1つのDLLにありませんか?
- 21. Gitは2つの別々のプロジェクト/ git reposを1つのマスタープロジェクトにマージしますか?
- 22. 1つのファイルを別の\ Linuxにマージする方法
- 23. SVNリビジョンから別のブランチに1つのファイルをマージする
- 24. gitを1つのフォークから別のフォークにマージする
- 25. 1つのページに別々のテーブルを表示する
- 26. 別々のオーディオファイルとビデオファイルを1つのファイルにまとめるC++
- 27. 複数の機能が1つのdllまたは別々にありますか?
- 28. 複数の配列を1つのルビにマージする
- 29. PHP - サブキーにキーをマージする方法1つの配列の
- 30. 1つの連想配列内に2つの連想配列をマージする
なぜReadmeファイルにUnityが前提条件であると言わないのですか?また、UnityライセンスがサードパーティのDLLにマージしてそのような方法で配布することを許可しているかどうかはわかりません。 – abatishchev
私はそれが最良のアプローチだと思います。私に関係する唯一のことは、消費者が互換性のある単一性を得ることができない限り、図書館は役に立たなくなるということです。これはよくある問題だと思います。私はユニティのリリースバージョンを使用しており、ライブラリは正確なバージョンでそれを参照するので、消費者は単に彼らが何をしているのかを知る必要があります。 –
私はそれが問題であることに同意します。企業環境の場合、個人消費者などの場合にはそれほど意味がありません。 – abatishchev