找不到资产文件project.assets.json。运行NuGet软件包还原


260

我正在尝试使用nopCommerce(这是用.NET Core编写的),但是当我想运行项目时,我会遇到5​​2条错误消息,告诉我运行nuget包还原

资产文件〜\ obj \ project。未找到assets.json。运行NuGet软件包还原以生成此文件。Nop.Web.MVC.Testsote

当我在解决方案上单击鼠标右键,然后选择“还原Nuget程序包”时,收到以下消息:

所有软件包都已安装,没有任何要还原的内容。

但是那52个错误仍然存​​在,并且在工具-> NuGet软件包管理器->管理解决方案的NuGet软件包中,解决方案 上没有安装任何东西,我最近也将VS2017更新为15.5.4


您是否已同意NuGet恢复?转到工具,选项,搜索NuGet,然后选中“允许NuGet ...”选项。
曝光

如果有人在Mac上,我们将遇到此问题,并通过删除存储库路径(在git pull中创建)中的空格来解决此问题:My%20Project变为MyProject。
David Hague

Answers:


453

要从工具> NuGet软件包管理器>软件包管理器控制台中修复此错误,只需运行:

dotnet restore

发生错误是因为dotnet cli最初并未创建所有必需的文件。执行dotnet还原会添加所需的文件。


21
这也是构建服务器的修复程序。在正常的NuGet还原后,添加了一个命令行步骤来运行“ dotnet restore”。
马克

24
您也可以从MSBuild中进行操作:msbuild MySolution.sln / t:Restore
Der_Meister

3
@Der_Meister的添加/ t:Restore选项的解决方案对我有效,但是,我不得不对该解决方案进行两次构建(两个单独的构建步骤)。首先使用/ t:Restore选项,然后再次使用它。
迈克尔

16
@Michael,尝试msbuild MySolution.sln / t:Restore; Build
Der_Meister

8
如果您有多个解决方案文件,则需要做dotnet restore solutionfilename.sln
ECH

96

在我的情况下,错误是GIT存储库。名称中有空格,使我的项目无法还原

如果这是您的问题,请在克隆时重命名GIT存储库

git clone http://Your%20Project%20With%20Spaces newprojectname

6
我以为自己不可能是这样。在尝试了其他建议的解决方案又一个小时之后,我终于绝望地尝试了一下,它解决了我的问题。该死的人!
斯塔克

2
这解决了我遇到的问题,非常感谢!
Sharbel

3
这个答案应该在帖子的开头而不是结尾。解决了我的问题。
CodeWarrior

2
你救了我的一天!谢谢。
mpatel '19

3
就我而言,我只是通过删除%20重命名了我的物理文件夹,并将其替换为正常空间,并且一切正常
胡沙姆hemaily

42

如果“ dotnet restore”无法正常工作,则以下步骤可能会有所帮助:

  1. Visual Studio >>工具>>选项>> Nuget Manager >>程序包源
  2. 取消选中任何第三方软件包的来源。
  3. 重建解决方案。

3
我最近在身份服务器快速入门1:使用客户端凭据保护API时遇到了这个问题,以上解决方案对我来说很有效。
Tharindu Jayasinghe

谢谢!实际上,我从另一个解决方案中删除了一个不再相关的源,在nuget.orgMSVS脱机软件包源上,我单击了“ 更新”按钮。经过这个dotnet restore工作。
CPHPython

谢谢,就是这样!
tdracz

33

一旦我确定已按照此处发布的其他答案还原了NuGet程序包,关闭并重新打开Visual Studio即可为我解决此问题。


不敢相信,在执行dotnet还原之后,而且仅在此之后,此方法对我也有效
Gaspa79,18年

我的工作LAN上存在一些单独的连接问题,这些问题对NuGet不利。重新启动我的电脑解决了这个问题!

这确实不是答案,因为有时您使用CLI工具来打开VS getbuild而您却没有打开VS。我知道为什么它可以与VS一起使用-因为VS自动解决了项目依赖性。
TS

@TS该问题带有“ Visual Studio 2017”标记,所以我想这一个答案。但是,您提出了一个有趣的观点,问题在于VS解决依赖关系。如果您有任何更多有关发生问题的信息,我相信这会引起关注:)
OutstandingBill

+1。你抓到我了!有了VS,哦。他的15.5版有错误。我认为15.5 / 15.6有很多问题需要参考解决。现在,这是答案stackoverflow.com/a/58548856/1704458
TS

20

对于在Azure DevOps / VSTS环境中遇到与我相同的问题的人,遇到类似的消息: C:\Program Files\dotnet\sdk\2.2.104\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file '...\obj\project.assets.json' not found. Run a NuGet package restore to generate this file

/t:Restore在构建解决方案中添加到您的MSBuild参数。


9

对我来说,当我这样做时-dotnet restore仍然发生错误。

我去了

1工具-> NuGet软件包管理器->软件包管理器设置->单击“清除Nuget Catche(s)”

2 dotnet还原

解决的问题。


下次发生时,我将尝试此操作。这可能是比我更好的办法(关闭并重新打开VS),这通常需要年龄对我来说。
OutstandingBill

6

在Visual Studio 2017中,请执行以下步骤:

1)选择工具=>选项=> NuGet软件包管理器=>软件包源,然后取消选中Microsoft Visual Studio脱机软件包选项。 在此处输入图片说明

2)现在打开工具=> NuGet软件包管理器=>软件包管理器控制台。3)在PM> dotnet恢复中执行命令。

希望它能工作...




3

答案来得有点晚,但看来这会增加价值。查看错误-它似乎发生在CI / CD管道中。

仅运行“ dotnet构建”就足够了。

网络构建

dotnet构建默认情况下运行“还原”。


1
也可以通过在管道中添加步骤“ .NET core”(在构建之前),然后从下拉列表中选择“ dotnet restore”命令来实现。我在这里专门谈论VSTS管道。
LechOsiński18年

3

以上对我没有任何帮助。但是只需删除所有“ bin”和“ obj”文件夹就可以了。


当我使用Dockerfile时,这个问题就发生了。删除这些文件夹会使容器中的dotnet恢复正常工作。
约翰内斯,


2

使用VSTS时,请检查您的global.json文件。我仅以“ 2.2”的形式输入了sdk版本,这引起了解析错误(但在本地构建时却没有)。添加完整版本后,“ 2.2.104”解决了该问题。


2

当我在构建管道中设置“ Visual Studio Build”任务以在我的解决方案而不是整个解决方案中构建单个项目时,我在Azure DevOps中的此错误上浪费了几个小时。

这样做意味着DevOps要么不会构建任何(或者可能是一些,我不确定是哪个,我不确定是哪个)您要构建的项目所引用的项目,因此这些项目将没有他们的project.json。 .asset文件生成,然后导致此问题。

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


1

如果仅还原NuGet软件包不起作用,请确保在“ 软件包还原 ” 下的“ 工具” ->“ 选项” ->“ NuGet软件包管理器” ->“ 常规 ”中,选中“允许NuGet下载丢失的软件包”。

然后再次还原NuGet软件包,或者在删除obj和bin文件夹后重新构建


1

如果@ mostafa-bouzari的建议无济于事,请在“错误列表”或“输出”窗口中仔细检查以确保NuGet无法还原的错误,例如,由于网络问题,如果您落后于代理。


就我而言,因为我未连接到公司VPN,所以Nuget Restore无法连接到我们的私有NuGet存储库。检查Package Manager控制台日志有帮助。
亚历山大·普赫科夫

1

当您的构建工具未设置为restore对使用PackageReferencevs 设置的项目执行时,packages.config并且主要影响Net Core和Netstandard新样式项目时,会发生此问题。

当您打开Visual Studio并进行构建时,它将为您解决此问题。但是,如果您使用自动化的CLI工具,则会看到此问题。

这里提供了许多解决方案。但是,所有您需要记住的,都需要强迫restore。在某些情况下,请dotnet restore在构建前使用。如果您使用MsBuild进行构建,只需/t:Restore在命令中添加switch即可。

最重要的是,您需要查看为什么无法激活还原。坏的nuget源,丢失的还原操作,过时的nuget.exe或以上所有原因。


1

我遇到过非常奇怪的经历!

我之前用GIT bash和GIT cmd-Line克隆过,遇到了上述问题。

后来,我克隆了Tortoise-GIT,一切正常。

可能这是一个疯狂的答案,但是尝试一次可以节省您的时间!


1

在VS-2019 vs 16.4.0上添加WinForms Core 3.1项目(从项目模板)并尝试立即使用它后,看到了这一点。清理或重建整个解决方案无效。

我只是重新加载了我的解决方案..即文件/关闭解决方案,然后重新打开并重建它解决了该问题。


1

如果此错误在Azure DevOps(TFS)中作为生成的一部分发生,并且您的生成已具有NuGet还原任务,则此错误可能表明NuGet还原任务无法还原所有软件包,尤其是如果您使用自定义软件包源(例如内部的NuGet服务器)。新增中/t:Restore;Build到MSBuild参数似乎是解决错误的一种方法,但这要求MSBuild执行其他NuGet还原操作。我相信这会成功,因为MSBuild使用Visual Studio中配置的自定义包源。一个更好的解决方案是修复NuGet恢复任务。

要为NuGet恢复任务配置自定义程序包源,请执行以下操作:

  1. 创建一个NuGet.config列出所有包源(Microsoft Visual Studio脱机包,nuget.org和您的自定义包源)的文件,并将其添加到源控件中。
  2. 要使用的Feed下的Nuget恢复任务中在我的NuGet.config中选择选项Feed
  3. 提供的路径NuGet.config
  4. /t:Restore;Build从MSBuild任务中删除该选项。

在此处获取更多信息。


0

在VS2017中在点网核心中创建lambda时出现错误。对我有用的是卸载项目并将其重新加载。



0

另一个,如果有可能您正在使用Dropbox,请检查Conflicted文件名,在存储库中进行搜索并删除所有那些冲突的文件。

如果您移动了文件,则可能发生了这种情况。


0

造成此缺陷的原因:您必须在文件资源管理器中删除注入的Nuget。解决方案:在系统中删除该Nuget后,请从以下位置删除。选择工具=>选项=> NuGet软件包管理器=>软件包源,然后取消选中Microsoft Visual Studio脱机软件包选项



0

就我而言,我对“可用软件包来源”有疑问。我已将本地nuget存储库文件夹移至新路径,但未在Nuget Available Package Sources中对其进行更新。当我纠正了路径问题后,请在“可用软件包源”中对其进行更新,然后所有内容(nuget restor等)都可以正常工作。


0

对我来说,这是一个麻烦的源证书问题。我最近更改了用于访问nexus服务器的密码,并且当试图通过Windows凭据管理器访问该服务器上的nuget时,Visual Studio仍在使用旧密码。要解决此问题,我必须在凭据管理器中删除那些过时的凭据的条目,然后,当我执行nuget还原时,它提示我输入密码,让我输入新密码,该密码再次保存在凭据管理器中。您可以使用CmdKey.exe从cmd行访问凭据管理器。


0

试试这个(对我有用):

  • 以管理员身份运行VS
  • 手动将NuGet更新到最新版本
  • 删除项目中的所有bin和obj文件。
  • 重启VS
  • 重新编译

0

您可以前往:工具> NuGet软件包管理器>软件包管理器控制台

然后运行:

点网还原

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.