15

我正在构建一个引用 Microsoft CommonServiceLocator 程序集的 NuGet 包。

Microsoft CommonServiceLocator 有两个版本:

我的项目是一个可移植类库,但是因为它有时与企业库一起使用,所以我需要“有条件地”引用可移植版本,这样就不会有冲突。

  • 如果目标框架是完整的 .NET 4.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

我还发现了一件事,因为默认情况下 win+sl50+wp8 包含 net45 您可能想要包含它以便安装此依赖组。

于 2012-12-03T20:37:55.673 回答