Assets file project.assets.json未找到。运行NuGet包还原。

541
我试着使用 nopCommerce(基于 .NET Core 开发),但在运行该项目时,遇到了 52 个错误,告诉我要运行一个 NuGet 包还原。报错信息为:“Assets file ~\obj\project.assets.json' not found. Run a NuGet package restore to generate this file. Nop.Web.MVC.Testsote”。当我右键单击解决方案并选择还原 NuGet 包时,出现以下信息:“All packages are already installed and there is nothing to restore.”。但这些 52 个错误仍然存在,并且在“工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 包”中,该解决方案上没有安装任何内容。同时,我最近将 VS2017 升级到了 15.5.4 版本。

您是否已经同意让 NuGet 进行还原操作?请前往“工具” -> “选项”,搜索 NuGet 并勾选“允许 NuGet...”选项。 - imps
34
如果有人在使用Mac电脑时遇到这个问题,可以通过移除代码库路径中的空格来解决(这些空格是在进行git pull操作时创建的):将"My%20Project"修改为"MyProject"。 - David Hague
2
@DavidHague 谢谢你关于在Mac上修复带空格的存储库路径的提示 - 那是我的问题 - 谢谢! - AVH
2
@DavidHague 节省了很多时间。谢谢你。空间是问题所在。 - Prabhat Ranjan
右键点击解决方案,选择“还原 NuGet 包”对我很有效。 - Nick Westgate
显示剩余6条评论
41个回答

9

是的 - 当我们开始将旧的 .Net Framework 项目迁移到新的 .csproj 项目格式时,我发现了这个问题。 - StuartLC
要更新nuget.exe...请在VS命令提示符下运行:nuget.exe update -self只有在更新到最新的nuget并执行dotnet Restore之后,这些错误才消失了。 - James S

8

您可以从"https://api.nuget.org/v3/index.json"获取所需的软件包。将其添加到程序包资源中。此外,确保其他软件包在暂时未选中状态下。然后,在“解决方案资源管理器”中单击“还原 Nuget 包”enter image description here


7

选择 工具 > NuGet 包管理器 > 程序包管理器控制台

然后运行:

dotnet restore <project or solution name>

6

以上方法都对我没有用。但是简单删除所有的'bin'和'obj'文件夹就可以解决问题。


当我在一个 Dockerfile 上工作时,这个问题发生了。删除那些文件夹使得容器中的 dotnet restore 能够正常工作。 - Johannes

5
当您的构建工具未设置为在使用PackageReference而不是packages.config的项目上执行restore时,会出现此问题,这主要影响Net Core和Netstandard新样式项目。如果您使用自动化、CLI工具,则会看到此问题,但如果您打开Visual Studio并进行构建,则会解决此问题。
有许多解决方案。但您需要记住的是,您需要强制执行restore。在某些情况下,在构建之前使用dotnet restore。如果您使用MsBuild构建,只需将/t:Restore开关添加到命令中即可。
总之,您需要查看为什么无法激活还原。可能是NuGet源有问题,缺少还原操作或NuGet.exe已过时,或者以上所有原因。

1
“/t:Restore” 在一个混合解决方案(框架、核心和标准项目混合)中,成为了解决我的问题的方法。在使用这种方法之前,标准/核心项目一直出现错误。 - jpt

5
您可以选择:工具 > NuGet 包管理器 > 包管理器控制台
然后运行:
dotnet restore

4

当我在Azure DevOps中将构建管道的“Visual Studio Build”任务设置为仅构建解决方案中的某个项目而非整个解决方案时,我在这个错误上浪费了几个小时。

这样做意味着DevOps可能不会构建(或可能是其中一些,我不确定)由您定位进行构建的项目引用的任何项目,因此这些项目将无法生成其project.json.asset文件,从而导致该问题。

对我来说,解决方案是从使用VS Build任务转换为MSBuild任务。 对于单个项目,使用MSBuild任务可以正确地构建项目所引用的所有项目,并消除此错误。


4

虽然回答有点晚,但似乎这会增加价值。从错误信息来看,它似乎发生在CI/CD流水线中。

只需运行"dotnet build"即可足够。

dotnet build

dotnet build默认运行"restore"。


1
还可以通过在流水线(构建之前)中添加“ .NET core”步骤,并从下拉菜单中选择“ dotnet restore”命令来实现。我在这里特指VSTS管道。 - Lech Osiński

3
如果仅仅恢复NuGet包无法运行,请确保在工具 -> 选项 -> NuGet程序包管理器 -> 常规下的包还原中,“允许NuGet下载缺失的包”被勾选。
然后再次恢复NuGet包,或者删除obj和bin文件夹后重新重建

2

我的CLI/C++中没有任何NuGet。VS2022构建正常。但是,MSBuild无法工作,给我错误NETSDK1004:未找到资产文件... obj\project.assets.json'。运行NuGet包还原以生成此文件。

解决我的问题的方法是从vcxproj文件中删除以下内容。

<EnableManagedPackageReferenceSupport>true</EnableManagedPackageReferenceSupport>

我想把 true 改成 false 可能会起作用。我删除了这行代码,现在 MSBuild 工作正常。


将其更改为 false 对我没有起作用,但删除整行就可以了!感谢您的解决方案。 - Bruce Ikin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接