15

MicrosoftCommonServiceLocatorアセンブリを参照するNuGetパッケージを構築しています。

MicrosoftCommonServiceLocatorには次の2つのバージョンがあります。

私のプロジェクトはポータブルクラスライブラリですが、エンタープライズライブラリで使用されることがあるため、競合が発生しないように、ポータブルバージョンを「条件付きで」参照する必要があります。

  • ターゲットフレームワークが完全な.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構文は正しいですか?例が見つからないので、+区切られたメカニズムが正しいのか、それともコンマで区切る必要があるのか​​わかりません。
  • デフォルトのグループは機能しますか?ターゲットフレームワークが指定されていないそのグループ-それは常に含まれますか、それともすべてのグループにコピー/貼り付けする必要がありますか?
4

1 に答える 1

7

ええ、それはかなり正しいです。ポータブルフレームワーク名の詳細については、http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#Framework_Namesを参照してください。

私が見つけたもう1つのことは、win + sl50 + wp8にはデフォルトでnet45が含まれているため、この依存関係グループがインストールされるように、net45を含めることをお勧めします。

于 2012-12-03T20:37:55.673 に答える