我正在构建一个引用 Microsoft CommonServiceLocator 程序集的 NuGet 包。
Microsoft CommonServiceLocator 有两个版本:
- CommonServiceLocator - 面向完整的 .NET 框架,并被 Microsoft EnterpriseLibrary 组件引用。
- Portable.CommonServiceLocator - 包含 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
语法对吗?我找不到任何例子,所以我不知道+
分隔机制是否正确,或者是否应该用逗号分隔。 - 默认组会起作用吗?具有未指定目标框架的那个组 - 是否会始终包含在内,还是我需要在每个组中复制/粘贴它?