Nuget 防止可移植类库的自动框架目标
我在nuget上发布了一个针对.NETFramework 4.5的库 解决方案如下所示: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 我想添加一个可移植类库,因此我
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部件