Nuget 防止可移植类库的自动框架目标

Nuget 防止可移植类库的自动框架目标,nuget,portable-class-library,Nuget,Portable Class Library,我在nuget上发布了一个针对.NETFramework 4.5的库 解决方案如下所示: Solution └─ Project.Net45 ─lib └─net45 ─lib └─net45 └─portable-net45+wp80+win nuget包看起来像: Solution └─ Project.Net45 ─lib └─net45 ─lib └─net45 └─portable-net45+wp80+win 我想添加一个可移植类库,因此我

我在nuget上发布了一个针对.NETFramework 4.5的库

解决方案如下所示:

Solution
  └─ Project.Net45
─lib
  └─net45
─lib
  └─net45
  └─portable-net45+wp80+win
nuget包看起来像:

Solution
  └─ Project.Net45
─lib
  └─net45
─lib
  └─net45
  └─portable-net45+wp80+win
我想添加一个可移植类库,因此我将解决方案修改为:

Solution
  └─ Project.Net45
  └─ Project.Pcl (Targets Windows Store Apps and Windows Phone 8)
我必须修改可移植类库中的代码,以解决与这些目标不兼容的问题,例如serializable属性和Thread.Sleep

问题是可移植类库自动设置为目标.NET Framework 4.5,并显示以下消息:

“将自动选择以下框架,因为它们 支持所有可移植的可用功能 您选择的其他框架:.NET Framework 4.5和 更高”

nuget包现在看起来像:

Solution
  └─ Project.Net45
─lib
  └─net45
─lib
  └─net45
  └─portable-net45+wp80+win
如果我将此nuget软件包安装到一个针对.NET Framework 4.5的库中,我宁愿使用net45库,而不是可移植类库,因为net45库较小,并且没有解决windows phone 8等中缺少的功能所需的所有额外代码

将nuget包更改为以下结构是否会产生预期效果:

─lib
  └─net45
  └─portable-wp80+win

还是我误解了可移植类库的使用

NuGet在向NuGet包中的程序集添加引用时会查找最佳匹配

如果您的项目以.NET4.5为目标,则NuGet将安装net45程序集,因为它认为该程序集最匹配

将NuGet包添加到兼容的PCL项目时,将使用PCL程序集

如果您的NuGet包中只有PCL程序集,那么如果您将其安装到以.NET 4.5为目标的项目中,NuGet将添加对它的引用。但是,由于您拥有这两个部件,它将拾取net45部件