未找到资产文件 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 -> General 在 Package 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' 不起作用,以下步骤可能会有所帮助:
- Visual Studio >> 工具 >> 选项 >> Nuget 管理器 >> 包源
- 未选中任何第三方包源。
- 重建解决方案。
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 等)都工作正常。
当您的构建工具未设置为在设置为使用 PackageReference
与 packages.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 恢复任务配置自定义包源:
- 创建一个列出所有包源(Microsoft Visual Studio 离线包、nuget.org 和您的自定义包源)的
NuGet.config
文件,并将其添加到源代码管理中。
- 在 Feeds 下的 Nuget 恢复任务中使用: select 选项 Feeds in my NuGet.config .
- 提供
NuGet.config
. 的路径
- 从 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.
我正在尝试使用 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 -> General 在 Package 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' 不起作用,以下步骤可能会有所帮助:
- Visual Studio >> 工具 >> 选项 >> Nuget 管理器 >> 包源
- 未选中任何第三方包源。
- 重建解决方案。
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 等)都工作正常。
当您的构建工具未设置为在设置为使用 PackageReference
与 packages.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 恢复任务配置自定义包源:
- 创建一个列出所有包源(Microsoft Visual Studio 离线包、nuget.org 和您的自定义包源)的
NuGet.config
文件,并将其添加到源代码管理中。 - 在 Feeds 下的 Nuget 恢复任务中使用: select 选项 Feeds in my NuGet.config .
- 提供
NuGet.config
. 的路径
- 从 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.