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

时间:2018-01-25 10:04:37

标签: nuget visual-studio-2017 .net-core nuget-package-restore

我正在尝试使用nopCommerce(这是用.NET Core编写的),但当我想运行该项目时,我面临52个错误告诉我运行nuget包恢复

  

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

当我右键单击解决方案并选择Restore Nuget Packages时,我收到以下消息:

  

所有软件包都已安装,无需恢复。

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

32 个答案:

答案 0 :(得分:197)

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

dotnet restore

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

答案 1 :(得分:41)

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

如果这是您的问题,请在克隆

时重命名GIT存储库
git clone http://Your%20Project%20With%20Spaces newprojectname

答案 2 :(得分:15)

关闭并重新打开Visual Studio,一旦我确定NuGet软件包已根据此处发布的其他答案进行了恢复,我就解决了这个问题。

答案 3 :(得分:11)

如果“ dotnet restore”无法正常工作,请执行以下步骤:

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

答案 4 :(得分:4)

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

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

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

其他信息可用here

答案 5 :(得分:2)

前面已经提到过,但是我只是想再次强调在您的路径中没有空格 的重要性!这就是让我生气的原因。您已被警告。

答案 6 :(得分:2)

选择工具> NuGet软件包管理器> 软件包管理器控制台

然后运行:

dotnet restore <project or solution name>

答案 7 :(得分:1)

对于在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

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

答案 8 :(得分:1)

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

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

答案 9 :(得分:1)

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

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

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

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

答案 10 :(得分:1)

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

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

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

答案 11 :(得分:1)

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

答案 12 :(得分:1)

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

答案 13 :(得分:1)

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

刚刚运行&#34; dotnet build&#34;足够了。

  

dotnet build

dotnet build运行&#34;恢复&#34;默认情况下。

答案 14 :(得分:1)

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

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

答案 15 :(得分:1)

对我来说,我-网络恢复仍然出现错误。

我去

  

1工具-> NuGet软件包管理器->软件包管理器设置->单击“清除Nuget修补程序”

     

2个dotnet恢复

已解决的问题。

答案 16 :(得分:1)

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

1)选择工具=>选项=> NuGet软件包管理器=>软件包源,然后取消选中 Microsoft Visual Studio脱机软件包选项。 enter image description here

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

希望它能正常工作...

答案 17 :(得分:0)

通过添加/ t:Restore; Build来解决MSBuild参数

答案 18 :(得分:0)

我在 Azure DevOps 上收到一条关于找不到文件的消息

我需要在我的 YAML 部署文件上创建这个,在构建任务之后

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '**\*.sln'
    feedsToUse: 'config'
    noCache: false

答案 19 :(得分:0)

您将从“ https://api.nuget.org/v3/index.json”获取所需的软件包。在软件包资源中添加它。还要确保暂时不检查其他软件包。然后在解决方案资源管理器enter image description here上单击Restore Nuget Package

答案 20 :(得分:0)

我在VS2017中创建了一个点网核中的lambda时出错了。对我有用的是卸载项目并加载它。

答案 21 :(得分:0)

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

然后运行:

dotnet恢复

答案 22 :(得分:0)

尝试一下(对我有用)

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

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

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

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

在软件包管理器控制台中以管理员身份运行VS后,运行dotnet restore。

答案 27 :(得分:0)

如果@ mostafa-bouzari suggestion无效,请在“错误列表”或“输出”窗口中仔细检查以获取NuGet无法还原的错误,例如因为网络问题(如果您落后于代理服务器)。

答案 28 :(得分:0)

对我来说,我将NuGet.exe从3.4升级到4.9,因为3.4无法理解如何为.NET Core还原软件包。

有关详细信息,请参见dotnet restore vs. nuget restore with teamcity

答案 29 :(得分:0)

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

如果您移动了文件,这可能发生了。

答案 30 :(得分:0)

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

答案 31 :(得分:0)

这对我有用: 添加了此软件包的来源:  Microsoft和.net  https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/ 然后在控制台中运行“ dotnet restore”