MicrosoftCommonServiceLocatorアセンブリを参照するNuGetパッケージを構築しています。
MicrosoftCommonServiceLocatorには次の2つのバージョンがあります。
- CommonServiceLocator-完全な.NETFrameworkを対象とし、MicrosoftEnterpriseLibraryコンポーネントによって参照されます。
- Portable.CommonServiceLocator -CommonServiceLocatorのフルバージョンと最近リリースされたPortableClassLibraryバージョンの両方が含まれています。
私のプロジェクトはポータブルクラスライブラリですが、エンタープライズライブラリで使用されることがあるため、競合が発生しないように、ポータブルバージョンを「条件付きで」参照する必要があります。
- ターゲットフレームワークが完全な.NET4.0/ 4.5の場合は、元のCommonServiceLocatorパッケージを使用して、エンタープライズライブラリビット(CommonServiceLocatorパッケージも参照)を使用できるようにします。
- ターゲットフレームワークが移植可能(またはその他のもの)の場合は、Portable.CommonServiceLocatorパッケージを使用します。
NuGetドキュメントに新しい「グループ」機能があり、.nuspecファイルで依存関係を指定する方法が示されています。これでうまくいくと思いますが、テスト方法がわかりません。
これが私がしなければならないと思うことであり、誰かが私のアプローチを検証するか、正しい方向に私を向けることができることを望んでいます:
<dependencies>
<group>
<!-- Always include regardless of target framework -->
<dependency id="Autofac" />
</group>
<group targetFramework="net40">
<!-- Also include the full CSL if it's full framework -->
<dependency id="CommonServiceLocator" />
</group>
<group targetFramework="portable-win+sl50+wp8">
<!-- Otherwise include the Portable CSL -->
<dependency id="Portable.CommonServiceLocator" />
</group>
</dependencies>
具体的には...
- 私の
targetFramework
構文は正しいですか?例が見つからないので、+
区切られたメカニズムが正しいのか、それともコンマで区切る必要があるのかわかりません。 - デフォルトのグループは機能しますか?ターゲットフレームワークが指定されていないそのグループ-それは常に含まれますか、それともすべてのグループにコピー/貼り付けする必要がありますか?