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

Assets file project.assets.json not found. Run a NuGet package restore

我正在尝试使用 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 包管理器”>“包管理器控制台”修复此错误,只需 运行:

dotnet restore

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

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

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

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

我在 VS2017 的 dot net core 中创建 lambda 时出现错误。对我有用的是卸载项目并将其加载回去。

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

只要运行"dotnet build"就够了。

dotnet build

dotnet build 默认运行 "restore"。

关闭并重新打开 Visual Studio 为我解决了这个问题,一旦我确定 NuGet 包已按照此处发布的其他答案恢复。

编辑: 有时只需重新构建即可解决问题。

如果简单地恢复 NuGet 包不起作用,请确保在 Tools -> Options -> NuGet Package Manager -> GeneralPackage Restore 下检查 "Allow NuGet to download missing packages"。

然后再次恢复 NuGet 包,或者在删除 obj 和 bin 文件夹后 REBUILD

在 visual studio 2017 年,请执行以下步骤:

1) select Tool=>Options=>NuGet Package Manager=> Package Sources 然后取消选中 Microsoft Visual Studio Offline Packages 选项。

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

希望它的工作...

运行 你的 VS 作为管理员之后在包管理器控制台 运行 dotnet restore。

如果 'dotnet restore' 不起作用,以下步骤可能会有所帮助:

  1. Visual Studio >> 工具 >> 选项 >> Nuget 管理器 >> 包源
  2. 未选中任何第三方包源。
  3. 重建解决方案。

Select 工具 > NuGet 包管理器 > 包管理器控制台

然后运行:

dotnet restore <project or solution name>

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

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

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

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

我去了

1 Tool -> NuGet Package Maneger -> Package Manager settings -> click on "Clear on Nuget Catche(s)"

2 dotnet restore

已解决问题。

这对我有用: 添加此包源: 微软和.net https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/ 然后在控制台运行 "dotnet restore"

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

对于在 Azure DevOps / VSTS 环境中遇到类似消息的与我有相同问题的人:

C:\Program Files\dotnet\sdk.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 参数。

对我来说,我将 NuGet.exe 从 3.4 升级到 4.9,因为 3.4 不了解如何为 .NET Core 恢复包。

详情请看

以上都不适合我。但只需删除所有 'bin' 和 'obj' 文件夹就可以了。

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

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

我的解决方案是从使用 VS Build 任务切换到 MSBuild 任务。对单个项目使用 MSBuild 任务可以正确构建您正在构建的项目引用的任何项目并消除此错误。

就我而言,可用包源有问题。我已将本地 nuget 存储库文件夹移动到新路径,但我没有在 Nuget 可用包源中更新它。当我更正路径问题后,在可用包源中更新它,然后一切(nuget restor 等)都工作正常。

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

当您打开 Visual Studio 并构建时,它会为您解决这个问题。但是如果你使用自动化,CLI 工具,你会看到这个问题。

这里提供了很多解决方案。不过大家要记住,要给力restore。在某些情况下,您在构建之前使用 dotnet restore。如果您使用 MsBuild 构建,只需将 /t:Restore 开关添加到您的命令。

归根结底,您需要了解为什么无法激活恢复。错误的 nuget 源或缺少恢复操作,或已过时 nuget.exe,或以上所有情况。

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

遇到过很奇葩的经历!

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

后来,我用 Tortoise-GIT 进行了克隆,一切都按预期进行了。

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

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

我刚刚重新加载了我的解决方案..那是 File/Close 解决方案,然后重新打开它并重建它解决了问题。

对我来说,这是一个 nuget 源凭据问题。我最近更改了访问 Nexus 服务器的密码,并且 visual studio 在尝试通过 windows 凭据管理器访问该服务器上的 nuget 时仍在使用旧密码。要修复它,我必须删除凭据管理器中那些过时凭据的条目,之后,当我执行 nuget 恢复时,它提示我输入密码,让我输入新密码,新密码再次保存在凭据管理器中。您可以使用 CmdKey.exe.

从 cmd 行访问凭证管理器

试试这个(对我有用):

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

如果此错误作为 Azure DevOps (TFS) 构建的一部分发生,并且您的构建已经有一个 NuGet 恢复 任务,此错误可能表示 NuGet 还原任务无法还原所有包,特别是如果您使用自定义包源(例如内部 NuGet 服务器)。将 /t:Restore;Build 添加到 MSBuild Arguments 似乎是解决错误的一种方法,但这会要求 MSBuild 执行额外的 NuGet 还原操作。我相信这会成功,因为 MSBuild 使用 Visual Studio 中配置的自定义包源。一个更好的解决方案是修复 NuGet 恢复任务。

为 NuGet 恢复任务配置自定义包源:

  1. 创建一个列出所有包源(Microsoft Visual Studio 离线包、nuget.org 和您的自定义包源)的 NuGet.config 文件,并将其添加到源代码管理中。
  2. Feeds 下的 Nuget 恢复任务中使用: select 选项 Feeds in my NuGet.config .
  3. 提供 NuGet.config.
  4. 的路径
  5. 从 MSBuild 任务中删除 /t:Restore;Build 选项。

有更多信息可用 here

您可以选择:工具 > NuGet 包管理器 > 包管理器控制台

然后运行:

dotnet 恢复

前面提到过,但我只是想再次强调在您的任何地方都不要 space 的重要性路径!这就是吸引我的原因。您已收到警告。

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

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

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

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

就我而言,我将以下内容添加到我的 *.csproj 文件中以完全删除 'Clean' 上的 obj 和 bin 文件夹。显然,这是罪魁祸首。摆脱了那个和中提琴,一切又开始工作了。现在我改用“Clean Bin”扩展。希望这可以帮助 运行 解决此问题的任何人,并且 none 提到的修复程序有效。

<Target Name="SuperClean" AfterTargets="Clean">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>    

我的问题是构建配置平台不匹配。有一次,我将“Any CPU”更改为“x64”,我能够发布。

当我收到此错误时对我有用的是添加 global.json 文件,但这可能与使用 Paket 而不是 Nuget 有关。

我有同样的问题,dotnet resotre 对我不起作用。我安装这个组件:

和 运行 dotnet resotre 问题已解决。

遇到了类似的问题。原来我没有访问 %APPDATA%\Local\Temp\NuGetScratch\lock

获得访问权限后,我可以 运行 恢复 nuget,但一切都开始工作了。

在我的例子中,它是 .net6 项目,构建发生在 DevOps windows-2019 代理上。

解决方法:windows-2022可以构建.net6.