如何在NuGet中基于目标框架指定条件依赖项?
我正在构建一个引用MicrosoftCommonServiceLocator程序集的NuGet包 有两个版本的Microsoft CommonServiceLocator:如何在NuGet中基于目标框架指定条件依赖项?,nuget,nuspec,Nuget,Nuspec,我正在构建一个引用MicrosoftCommonServiceLocator程序集的NuGet包 有两个版本的Microsoft CommonServiceLocator: -以完整的.NET framework为目标,并由Microsoft EnterpriseLibrary组件引用 -包含CommonServiceLocator的完整版本和 我的项目是一个可移植类库,但是,因为它有时与企业库一起使用,所以我需要“有条件地”引用可移植版本,这样就不会有冲突 如果目标框架是完整的.NET
- -以完整的.NET framework为目标,并由Microsoft EnterpriseLibrary组件引用
- -包含CommonServiceLocator的完整版本和
- 如果目标框架是完整的.NET 4.0/4.5,请使用原始的CommonServiceLocator包,这样人们也可以使用企业库位(它也引用CommonServiceLocator包)
- 如果目标框架是可移植的(或其他任何东西),请使用portable.CommonServiceLocator包
具体地说
- 我的
语法正确吗?我找不到任何示例,因此我不知道targetFramework
分隔机制是否正确,或者是否应该用逗号分隔+
- 默认组是否有效?该组具有未指定的目标框架-是否始终包含该框架,还是需要在每个组中复制/粘贴该框架
- 是的,这是非常正确的。有关可移植框架名称的详细信息可在此处找到
我还发现了一件事,因为win+sl50+wp8默认包含net45,所以您可能希望包含它,以便安装此依赖项组。如果它是完整的net45,我希望它使用CommonServiceLocator,而不是便携式,那么我会使用它吗?targetFramework=“net40+net45”不需要,它可以很好地工作,在安装到以net4.5为目标的项目上时可以使用,因为它的精确匹配级别高于便携库。仅指定net40的工作方式为“当NuGet安装具有多个程序集版本的包时,它会尝试将程序集的框架名称与项目的目标框架匹配。如果未找到匹配项,NuGet将复制低于或等于项目目标框架的最高版本的程序集”然后听起来我真的想省去net45引用,剩下的事情就应该顺理成章了。完美的谢谢