VS2019创建.NET Core3.1项目报错:无法找到NuGet回退包文件夹
使用VS2019创建.NET Core 3.1 Windows应用程序,构建时出现错误,提示无法找到回退包文件夹C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages,具体报错信息如下:
严重性 代码 描述 项目 文件 行 抑制状态
错误 MSB4018 "ResolvePackageAssets" 任务意外失败。
NuGet.Packaging.Core.PackagingException: 无法找到回退包文件夹 'C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages'。
在 NuGet.Packaging.FallbackPackagePathResolver..ctor(String userPackageFolder, IEnumerable1 fallbackPackageFolders) 在 Microsoft.NET.Build.Tasks.NuGetPackageResolver.CreateResolver(IEnumerable1 packageFolders)
在 Microsoft.NET.Build.Tasks.NuGetPackageResolver.CreateResolver(LockFile lockFile)
在 Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheWriter..ctor(ResolvePackageAssets task)
在 Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader.CreateReaderFromDisk(ResolvePackageAssets task, Byte[] settingsHash)
在 Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader..ctor(ResolvePackageAssets task)
在 Microsoft.NET.Build.Tasks.ResolvePackageAssets.ReadItemGroups()
在 Microsoft.NET.Build.Tasks.ResolvePackageAssets.ExecuteCore()
在 Microsoft.NET.Build.Tasks.TaskBase.Execute()
在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() WinFormsApp1 C:\Program Files\dotnet\sdk\5.0.410\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 241
解决方法
手动创建缺失的文件夹
直接在C:\Program Files (x86)\Microsoft Visual Studio\Shared路径下新建NuGetPackages文件夹,之后重新构建项目。检查并修改NuGet配置文件
打开用户目录下的%appdata%\NuGet\NuGet.Config文件:- 若存在
fallbackPackageFolders配置项且指向不存在的路径,删除该条目或修改为有效路径; - 若没有该配置项,可添加以下内容(保留默认回退路径):
<config> <add key="fallbackPackageFolders" value="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages" /> </config>
保存文件后重启VS,再尝试构建。
- 若存在
修复VS2019安装
若上述方法无效,可能是VS2019共享组件安装不完整:- 打开Visual Studio Installer,选择VS2019实例;
- 点击“修改”,确保勾选
.NET Core 3.1开发工具及相关NuGet组件; - 选择“修复”完成安装,之后重启VS构建项目;若修复无效,可尝试卸载后重新安装VS2019。
指定本地NuGet包路径
在项目的.csproj文件中添加以下配置,替换为你实际的本地NuGet包存储路径(比如C:\Users\<你的用户名>\.nuget\packages):<PropertyGroup> <RestorePackagesPath>C:\Users\<你的用户名>\.nuget\packages</RestorePackagesPath> </PropertyGroup>保存后重新加载项目并构建。
内容的提问来源于stack exchange,提问作者Unis

