ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试使用 nopCommerce(它是用 .NET Core 编写的)但是当我想运行该项目时,我遇到了 52 个错误,告诉我运行 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。
可以在这里查看带有各种解决方法的 MS Docs(2018 年 5 月更新):docs.microsoft.com/en-us/nuget/consume-packages/… 使用 nuget 时,事情永远不会像点击即走一样顺利!
@DavidHague 感谢您提供有关在 Mac 上修复带有空格的 repo 路径的提示 - 这是我的问题 - 谢谢!
@DavidHague 节省了很多时间。谢谢你。空间是问题。

M
Matteo Migliore

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

dotnet restore

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


这也是构建服务器的修复。添加了命令行步骤以在正常 NuGet 还原后运行“dotnet restore”。
您也可以从 MSBuild 执行此操作:msbuild MySolution.sln /t:Restore
@Der_Meister 添加 /t:Restore 选项的解决方案对我有用,但是,我必须构建解决方案两次(两个单独的构建步骤)。首先使用 /t:Restore 选项,然后再没有它。
@Michael,试试 msbuild MySolution.sln /t:Restore;Build
如果您有多个解决方案文件,则需要执行 dotnet restore solutionfilename.sln
S
Sebastian Castaldi

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

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

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

我心想,这不可能。在尝试了另一个小时的其他解决方案后,我终于绝望地尝试了这个,它解决了我的问题。该死的人!
这解决了我遇到的问题,非常感谢!
这个答案应该在帖子的开头而不是结尾。解决了我的问题。
你救了我的一天!谢谢你。
就我而言,我只是通过删除 %20 重命名了我的物理文件夹并将其替换为正常空间,并且一切正常
p
prisan

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

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


我最近遇到了身份服务器快速入门 #1:使用客户端凭据保护 API 的问题,上述解决方案对我有用。
谢谢!我实际上删除了一个不再相关的源(从另一个解决方案),在 nuget.orgMSVS Offline Packages 源上我单击了 Update 按钮。在此 dotnet restore 工作之后。
如果您需要第 3 方包源或您自己的组织通过 AzureDevOPs,请按照以下说明操作:docs.microsoft.com/en-us/azure/devops/artifacts/nuget/…
在我的情况下,有一个 Microsoft 离线包的条目,它似乎是无效的。花了很长时间才发现。谢谢。
是的,我从包管理器中添加了一些自定义 NuGet 引用,因此只是没有解决该问题。现在工作
U
Uwe Keim

对于那些在 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' 未找到。运行 NuGet 包还原以生成此文件

/t:Restore 添加到 Build Solution 中的 MSBuild Arguments。


可能是一种罕见的情况,但我还必须从我的 .csproj 中删除一个属性...如果它存在,请删除它:true...现在一切都很好了。
O
OutstandingBill

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

编辑:有时只是尝试再次构建可以解决问题。


不敢相信这在做 dotnet restore 之后也对我有用,而且只有在这之后
我的工作 LAN 上有一些单独的连接问题,这些问题阻碍了 NuGet。重新启动我的电脑解决了这个问题!
这真的不是一个答案,因为有时您使用 CLI 工具来 getbuild 并且您不打开 VS。我知道为什么它可以与 VS 一起使用——因为 VS 会自动解决项目依赖关系。
@TS 这个问题被标记为“Visual Studio 2017”,所以我想说这是一个答案。不过,您提出了一个有趣的观点,即问题在于 VS 解决依赖关系。如果您有更多关于出了什么问题的信息,我相信阅读起来会很有趣:)
+1。你抓住了我!用VS,哦。他的 15.5 版本有问题。我认为 15.5/15.6 有很多问题需要参考解决。现在,这是答案stackoverflow.com/a/58548856/1704458
C
Community

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

我去了

工具 -> NuGet 包管理器 -> 包管理器设置 -> 单击“清除 Nuget Catch” 2 dotnet restore

已解决的问题。


下次遇到这种情况我要试试这个。这可能是比我的(关闭并重新打开 VS)更好的方法,这对我来说通常需要很长时间。
dotnet restore 可以在包管理器控制台中运行
尝试了其他解决方案,这对我有用。
M
Manoj Gupta

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

https://i.stack.imgur.com/nz63p.png

2) 现在打开 Tool=>NuGet Package Maneger=>Package Manager Console。 3) 在 PM>dotnet restore 中执行命令。

希望它的工作...


这对我有用。谢谢!
J
Jeremiah Mercier

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

为 NuGet 还原任务配置自定义包源:

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

提供更多信息 here


M
Mike Homol

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


这对我有帮助 - 我在我的项目路径中留有空间,在我删除它们之后,它修复了它!
u
user8128167

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

详情请参阅dotnet restore vs. nuget restore with teamcity


是的 - 当我们开始将旧的 .Net Framework 项目迁移到新的 .csproj 项目格式时,我发现了这一点。
Y
Yogesh Dangre

https://i.stack.imgur.com/z7kAt.png


A
Andre Mesquita

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

然后运行:

dotnet restore <project or solution name>

a
alexbk66

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


当我处理 Dockerfile 时,这个问题发生在我身上。删除这些文件夹使容器中的 dotnet restore 正常工作。
A
Abdulsamet ILERI

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


对我来说,做 /t:Restore;Build 但 /t:Restore /t:Build 是行不通的,但是谢谢,你的回答帮助了我!
S
Sunny Sharma

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

只需运行“dotnet build”就足够了。

点网构建

dotnet build 默认运行“还原”。


也可以通过将步骤“.NET core”添加到管道(构建之前)并从下拉列表中选择“dotnet restore”命令来实现。我在这里专门谈论 VSTS 管道。
t
tomRedox

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

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

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


T
T.S.

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

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

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

最重要的是,您需要了解为什么无法激活恢复。错误的 nuget 源或缺少还原操作,或过时的 nuget.exe,或以上所有。


/t:Restore 最终解决了我在异构解决方案(框架、核心和标准项目混合)中的问题。在我使用这种方法之前,标准/核心项目因错误而失败。
N
Nick Kovalsky

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

然后再次恢复 NuGet 包,或者在删除 obj 和 bin 文件夹后重新构建。


s
seven

你可以去:工具> NuGet包管理器>包管理器控制台

然后运行:

点网还原


R
Rob Minnis

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


L
Lucas Brito

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


Ε
Ε Г И І И О

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

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

A
Arian

我有同样的问题,dotnet resotre 不适合我。我安装这个组件:

https://i.stack.imgur.com/RugNp.png

并运行dotnet resotre,问题已解决。


J
Jose A

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

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


b
balaji s

此缺陷的原因:您必须在文件资源管理器中删除注入的 Nuget。解决方案:在系统中删除该 Nuget 后,请从以下位置删除。选择 Tool=>Options=>NuGet Package Manager=> Package Sources 然后取消选中 Microsoft Visual Studio Offline Packages Option


H
Henry L

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


u
user11990436

在我的情况下,我遇到了可用包源的问题。我已将本地 nuget 存储库文件夹移动到新路径,但我没有在 Nuget 可用包源中更新它。当我纠正了路径问题时,在可用的包源中更新它,然后一切(nuget 恢复器等)都工作正常。


B
Bikram

我遇到的很奇怪的经历!

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

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

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


G
Goodies

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

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


J
J. Volkya

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