VS2017问题迁移至Nuget PackageReference

时间:2018-12-05 21:27:25

标签: visual-studio-2017 nuget

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以清除其中的一些问题。

1 个答案:

答案 0 :(得分:0)

  

VS2017问题迁移到Nuget PackageReference

根据错误消息,看来您是针对多个框架的。如果是,那就是您收到此问题的原因。因为nuget不会自动获取PackageReferenceproject.json依赖项。而且它不适用于新的.NET SDK多目标项目。

检查this thread了解更多详细信息。

要解决此问题,您可以按照以下文档介绍如何针对多个框架:

How to add netstandard2.0 to a C# .NET 4.5 class library

此外,已经淘汰了PCL库方法,现在您必须选择.NETStandard。 您可以使用“类库(.NET标准)”项目模板启动该项目。现在,您有了默认情况下使用packagereference的项目。

选中this thread

希望这会有所帮助。