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

Posted

技术标签:

【中文标题】找不到资产文件 project.assets.json。运行 NuGet 包还原【英文标题】:Assets file project.assets.json not found. Run a NuGet package restore 【发布时间】:2018-07-04 13:05:45 【问题描述】:

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

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

当我使用右键单击解决方案并选择恢复 Nuget 包时,我收到以下消息:

所有包都已安装,没有什么可恢复的。

但是这 52 个错误仍然存​​在,并且在 Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution 解决方案上没有安装任何东西,我最近也是如此将我的 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 节省了很多时间。谢谢你。空间是问题。 【参考方案1】:

要从工具 > 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【参考方案2】:

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

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

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

【讨论】:

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

如果“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 引用,因此只是没有解决这个问题。现在有效【参考方案4】:

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

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

【讨论】:

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

致那些在 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 添加到构建解决方案中的 MSBuild 参数中。

【讨论】:

可能是一种罕见的情况,但我还必须从我的 .csproj 中删除一个属性...如果它存在,请删除它:true...现在一切正常再次来到这个世界。【参考方案6】:

对我来说 - dotnet restore 仍然发生错误。

我去了

1 Tool -> NuGet Package Maneger -> Package Manager settings -> 点击“Clear on Nuget Catch(s)”

2 dotnet 恢复

已解决的问题。

【讨论】:

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

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

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

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

希望它的工作......

【讨论】:

这对我有用。谢谢!【参考方案8】:

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

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

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

更多信息请见here。

【讨论】:

【参考方案9】:

我将 NuGet.exe 从 3.4 升级到 4.9,因为 3.4 不知道如何为 .NET Core 恢复包。

详情请见dotnet restore vs. nuget restore with teamcity

【讨论】:

是的 - 当我们开始将旧的 .Net Framework 项目迁移到新的 .csproj 项目格式时,我发现了这一点。【参考方案10】:

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

然后运行:

dotnet restore <project or solution name>

【讨论】:

【参考方案11】:

前面提到过,但我只是想再次强调在您的路径中任何地方没有空间的重要性!这就是让我着迷的原因。您已收到警告。

【讨论】:

【参考方案12】:

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

【讨论】:

这个问题发生在我处理 Dockerfile 时。删除这些文件夹使容器中的 dotnet restore 正常工作。【参考方案13】:

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

【讨论】:

对我来说它不起作用 /t:Restore;Build 但是 /t:Restore /t:Build,但是谢谢,你的回答帮助了我! 这里有already been said【参考方案14】:

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

【讨论】:

【参考方案15】:

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

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

dotnet 构建

dotnet build 默认运行“restore”。

【讨论】:

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

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

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

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

【讨论】:

【参考方案17】:

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

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

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

归根结底,你需要看看为什么无法激活恢复。错误的 nuget 源或缺少还原操作,或过时的 nuget.exe,或以上所有。

【讨论】:

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

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

然后在删除 obj 和 bin 文件夹后再次Restore NuGet PackagesREBUILD

【讨论】:

【参考方案19】:

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

【讨论】:

【参考方案20】:

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

【讨论】:

【参考方案21】:

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

然后运行:

dotnet 恢复

【讨论】:

【参考方案22】:

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

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

【讨论】:

【参考方案23】:

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

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

【讨论】:

【参考方案24】:

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

【讨论】:

【参考方案25】:

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

【讨论】:

【参考方案26】:

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

【讨论】:

【参考方案27】:

我遇到的很奇怪的经历!

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

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

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

【讨论】:

【参考方案28】:

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

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

【讨论】:

【参考方案29】:

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

【讨论】:

【参考方案30】:

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

我需要在我的 YAML 部署文件中创建这个,AFTER BUILD TASK

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

【讨论】:

以上是关于找不到资产文件 project.assets.json。运行 NuGet 包还原的主要内容,如果未能解决你的问题,请参考以下文章

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

在 Azure Devops 上运行构建时找不到资产文件 project.assets.json

Android - 将原始资产中的文件保存到外部存储以供其他应用访问,导致找不到内容根异常

rails - 在生产模式下找不到 application.css 资产

带有 Spring Boot 的 Thymeleaf - 找不到静态资产 (CSS)

为啥 Rails 找不到我的资产?