所以我从nugetpackages.config迁移到PackageReference,发现存在一些兼容性问题。我将项目恢复到其工作状态(在PackageReference之前),现在我的项目没有编译。
我收到以下错误:
严重性代码描述项目文件行抑制状态 错误在C:\ Users \ user.nuget \ packages中找不到版本为6.2.0的软件包EntityFramework。运行NuGet软件包还原以下载该软件包。 DbManager
这发生在多个软件包中。似乎出于某种原因,Nuget在user.net \ package目录中搜索软件包。最初,项目内有一个文件夹,其中包含所有软件包。
通过编辑NuGet.Config文件,我强制全局路径位于项目内的文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="C:\Projects\App\App Source\packages\" />
<add key="globalPackagesFolder" value="C:\Projects\App\App Source\packages\" />
</config>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
</configuration>
我不知道为什么Nuget一直在那个位置寻找包裹。它应该在项目中的packages文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.2.0" targetFramework="net46" />
<package id="EntityFramework6.Npgsql" version="3.1.1" targetFramework="net46" />
<package id="Npgsql" version="3.2.7" targetFramework="net46" />
<package id="System.Threading.Tasks.Extensions" version="4.3.0" targetFramework="net46" />
<package id="Z.EntityFramework.Plus.EF6" version="1.7.17" targetFramework="net46" />
</packages>
在packages.config中找不到所有这些软件包。当我尝试PackageReference时,开始出现此问题。
有什么方法可以重置Nuget的设置吗?对于解决此问题的任何指导,我将不胜感激。
答案 0 :(得分:0)
TLDR;这是由于project.assets.json
文件夹中保留了新/obj/
文件的潜在副本造成的。这些可以安全删除。
您可以在根解决方案文件夹中运行此Powershell(后果自负),作为清除这些文件的快速方法:
ls project.assets.json -Recurse | foreach {rm $_}
使用project.assets.json
为项目生成 PackageReference
,以缓存项目的Nuget依赖图。即使您的项目正在使用(或还原为使用),packages.config
如果您尝试PackageReference
然后返回到packages.config
(或者即使您使用一种Nuget恢复方法在Git分支之间进行切换,而又使用另一种方法来进行切换),这也会在Visual Studio 2019中发生。
其他信息
有关project.assets.json
的更多信息,请参见:
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-build?tabs=netcore2x