我的系统上安装了VS 2013和VS 2015。
借助VS 2013 ,我目前正在开发Profile 111 PCL项目。 PCL目标对话框如下所示:
我正在尝试添加一个 NuGet 包(MetroLog),其中包含许多平台的专用程序集,和一个Profile 259 PCL程序集, 便携式net45 + WP8 + win81 + wpa81
由于Profile 111以Profile 259的子集为目标,因此应该可以在我的Profile 111项目中安装此 NuGet 包。但是,它没有!这是我得到的错误消息:
因此,NuGet安装程序因此期望NuGet包中的可移植组件也以 dnxcore50 为目标!
如果我查看Profile 111支持的框架列表( C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETPortable \ v4.5 \ Profile \ Profile111 \ SupportedFrameworks ),确实包含了对应于 dnxcore50 , ASP.NET Core 5.0 的目标(我想这是最近更新VS 2015的结果?)。
但是,为什么这会影响我在我的Profile 111项目中从NuGet引用PCL Profile 259库的能力?
而且,除了从Profile 111支持的frameworks文件夹中手动删除 ASP.NET Core 5.0.xml 文件之外,我还能做些什么来覆盖NuGet安装的这种行为吗?
注1 MetroLog 包(版本0.8.9)中便携式程序集的库规范实际上是不正确的。它声明 win81 是目标,但它应该真正声明 win 或 win8 或 wincore45 。但是,我已在本地修改了 .nupkg 文件,但更改为正确的 Windows 8 规范并不足以使NuGet可访问。
注意2 在VS 2015中尝试相同任务时, ASP.NET Core 5.0 会显示在PCL目标设置中,并在选择与Profile关联的其他目标时111, Change Targets 对话框通知 ASP.NET Core 5.0 将自动添加到支持的目标列表中。在尝试安装 MetroLog NuGet软件包时,错误消息是 MetroLog 不包含与PCL Profile 111兼容的任何配置文件。不同的路径,相同的最终结果......
更新在VS 2015中,我发现唯一的问题是 portable 文件夹路径中的 win81 规范无效。这是否已更改为有效的PCL配置文件111目标,即 win8 (或等效的 win 或 netcore45 ),我可以使用我的Profile 259项目中的NuGet包。在VS 2015中,只要正确指定了子组件,NuGet组件就可以充分识别PCL配置文件,无论是否列出 dnxcore50 。