Visual Studio VS2017 v15.9.3
Nuget v4.7.1.5393
我们正在尝试迁移我们的项目以使用Nuget PackageReference。在使用packages.config时,Nuget会正确确定该软件包与项目的目标框架匹配。但是,当我们尝试迁移到PackageReference时,Nuget会抛出错误,表明该软件包不支持目标框架。
Packages.config:程序包id =“ xxx.yyy” version =“ 7.7.7” targetFramework =“ net462”
尝试使用PackageReference时出错:
NU1202:软件包xxx.yyy 7.7.7与net462不兼容(.NETFramework,Version = v4.6.2)。软件包xxx.yyy 7.7.7不支持任何目标框架。
NU1202:软件包xxx.yyy 7.7.7与net462(.NETFramework,Version = v4.6.2)/ win不兼容。软件包xxx.yyy 7.7.7不支持任何目标框架。
NU1202:软件包xxx.yyy 7.7.7与net462(.NETFramework,Version = v4.6.2)/ win-x64不兼容。软件包xxx.yyy 7.7.7不支持任何目标框架。
NU1202:软件包xxx.yyy 7.7.7与net462(.NETFramework,Version = v4.6.2)/ win-x86不兼容。软件包xxx.yyy 7.7.7不支持任何目标框架。
打包还原失败。回滚“ ClassLibrary1”的软件包更改。
2018年12月7日更新。
在使用packageReference模式时,我们如何创建软件包以及Nuget如何解释它似乎存在多个问题。
第一个是我们如何指定目标。在package.config模式下的Nuget能够确定target =“ lib \ net462 \ project1”目标是.Net 4.62框架,但是当Nuget在PackageReference模式下时,目标必须更改为target =“ lib \ net462”。
另一个问题是,在package.config模式下,当您具有多种架构(x86,x84,AnyCpu)时,nuget更为宽容,您可以将所有它们都包含在标签中。
此外,甚至不要考虑尝试在解决方案中使用一些项目,其中一些使用packages.config,而另一些使用packageReference。为此,不必尝试使用默认软件包管理格式的不同设置运行VS实例。
我们发现我们必须删除解决方案中的obj文件夹,并在尝试转换时重新启动VS以清除其中的一些问题。
答案 0 :(得分:0)
VS2017问题迁移到Nuget PackageReference
根据错误消息,看来您是针对多个框架的。如果是,那就是您收到此问题的原因。因为nuget不会自动获取PackageReference
或project.json
依赖项。而且它不适用于新的.NET SDK多目标项目。
检查this thread了解更多详细信息。
要解决此问题,您可以按照以下文档介绍如何针对多个框架:
How to add netstandard2.0 to a C# .NET 4.5 class library
此外,已经淘汰了PCL库方法,现在您必须选择.NETStandard。 您可以使用“类库(.NET标准)”项目模板启动该项目。现在,您有了默认情况下使用packagereference的项目。
选中this thread。
希望这会有所帮助。