我正在尝试使用 nopCommerce(它是用 .NET Core 编写的)但是当我想运行该项目时,我遇到了 52 个错误,告诉我运行 nuget 包还原
资产文件 ~\obj\project.assets.json' 未找到。运行 NuGet 包还原以生成此文件。 Nop.Web.MVC.Testsote
当我使用右键单击解决方案并选择恢复 Nuget 包时,我收到以下消息:
所有软件包都已安装,没有什么可恢复的。
但是那些 52 个错误仍然存在,并且在工具 -> NuGet 包管理器 -> 管理 NuGet 包以解决方案中没有安装任何解决方案,我最近也将我的 VS2017 更新为 15.5.4
要从工具 > NuGet 包管理器 > 包管理器控制台修复此错误,只需运行:
dotnet restore
发生错误是因为 dotnet cli 最初没有创建所有必需的文件。执行 dotnet restore 会添加所需的文件。
就我而言,错误是 GIT 存储库。它的名称中有空格,使我的项目无法恢复
如果这是您的问题,只需在克隆时重命名 GIT 存储库
git clone http://Your%20Project%20With%20Spaces newprojectname
如果“dotnet restore”不起作用,以下步骤可能会有所帮助:
Visual Studio >> 工具 >> 选项 >> Nuget 管理器 >> 包源 未选中任何第三方包源。重建解决方案。
dotnet restore
工作之后。
对于那些在 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。
关闭并重新打开 Visual Studio 为我解决了这个问题,一旦我确定 NuGet 包已按照此处发布的其他答案进行恢复。
编辑:有时只是尝试再次构建可以解决问题。
get
和 build
并且您不打开 VS。我知道为什么它可以与 VS 一起使用——因为 VS 会自动解决项目依赖关系。
对我来说,当我这样做时 - dotnet restore 仍然发生错误。
我去了
工具 -> NuGet 包管理器 -> 包管理器设置 -> 单击“清除 Nuget Catch” 2 dotnet restore
已解决的问题。
dotnet restore
可以在包管理器控制台中运行
在 Visual Studio 2017 中,请执行以下步骤:
https://i.stack.imgur.com/nz63p.png
2) 现在打开 Tool=>NuGet Package Maneger=>Package Manager Console。 3) 在 PM>dotnet restore 中执行命令。
希望它的工作...
如果此错误作为 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。
前面提到过,但我只是想再次强调在你的路径中没有空间的重要性!这就是让我着迷的原因。你已经被警告过了。
对我来说,我将 NuGet.exe 从 3.4 升级到 4.9,因为 3.4 不了解如何为 .NET Core 恢复包。
详情请参阅dotnet restore vs. nuget restore with teamcity
.csproj
项目格式时,我发现了这一点。
https://i.stack.imgur.com/z7kAt.png
选择工具 > NuGet 包管理器 > 包管理器控制台
然后运行:
dotnet restore <project or solution name>
以上没有对我有用。但只需删除所有“bin”和“obj”文件夹就可以了。
通过添加 /t:Restore;Build 到 MSBuild Arguments 解决
答案有点晚了,但似乎这会增加价值。查看错误 - 它似乎发生在 CI/CD 管道中。
只需运行“dotnet build”就足够了。
点网构建
dotnet build 默认运行“还原”。
当我在构建管道中设置“Visual Studio Build”任务以在我的解决方案中构建单个项目而不是整个解决方案时,我在 Azure DevOps 中的这个错误上浪费了几个小时。
这样做意味着 DevOps 要么不构建任何(或者可能是一些,我不确定是哪个)您已针对构建的项目引用的项目,因此这些项目不会有他们的 project.json .asset 文件生成,然后导致此问题。
我的解决方案是从使用 VS Build 任务切换到 MSBuild 任务。对单个项目使用 MSBuild 任务可以正确构建您正在构建的项目引用的任何项目并消除此错误。
当您的构建工具未设置为在设置为使用 PackageReference
与 packages.config
的项目上执行 restore
并且主要影响 Net Core 和 Netstandard 新样式项目时,就会出现此问题。
当您打开 Visual Studio 并构建时,它会为您解决此问题。但是如果你使用自动化、CLI 工具,你就会看到这个问题。
这里提供了许多解决方案。但是您需要记住的只是,您需要强制执行 restore
。在某些情况下,您在构建之前使用 dotnet restore
。如果您使用 MsBuild 构建,只需将 /t:Restore
开关添加到您的命令。
最重要的是,您需要了解为什么无法激活恢复。错误的 nuget 源或缺少还原操作,或过时的 nuget.exe,或以上所有。
/t:Restore
最终解决了我在异构解决方案(框架、核心和标准项目混合)中的问题。在我使用这种方法之前,标准/核心项目因错误而失败。
如果简单地还原 NuGet 包不起作用,请确保在工具 -> 选项 -> NuGet 包管理器 -> 包还原下的常规中选中“允许 NuGet 下载丢失的包”。
然后再次恢复 NuGet 包,或者在删除 obj 和 bin 文件夹后重新构建。
你可以去:工具> NuGet包管理器>包管理器控制台
然后运行:
点网还原
使用 VSTS 时,请检查您的 global.json 文件。我输入的 sdk 版本只是“2.2”,这导致了解析错误(但不是在本地构建时)。添加完整版,“2.2.104”解决了这个问题。
之后在包管理器控制台中以管理员身份运行 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>
我有同样的问题,dotnet resotre
不适合我。我安装这个组件:
https://i.stack.imgur.com/RugNp.png
并运行dotnet resotre
,问题已解决。
另一个,如果您使用 Dropbox,请检查文件名中的 Conflicted
,在您的存储库中进行搜索并删除所有那些冲突的文件。
如果您移动了文件,则可能会发生这种情况。
此缺陷的原因:您必须在文件资源管理器中删除注入的 Nuget。解决方案:在系统中删除该 Nuget 后,请从以下位置删除。选择 Tool=>Options=>NuGet Package Manager=> Package Sources 然后取消选中 Microsoft Visual Studio Offline Packages Option
这对我有用:添加了这个包源:Microsoft and .net https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/ 然后在控制台中运行“dotnet restore”
在我的情况下,我遇到了可用包源的问题。我已将本地 nuget 存储库文件夹移动到新路径,但我没有在 Nuget 可用包源中更新它。当我纠正了路径问题时,在可用的包源中更新它,然后一切(nuget 恢复器等)都工作正常。
我遇到的很奇怪的经历!
我之前用 GIT bash 和 GIT cmd-Line 克隆过,遇到了上述问题。
后来,我用 Tortoise-GIT 进行了克隆,一切都按预期工作。
可能这是一个疯狂的答案,但尝试一次可能会节省您的时间!
在 VS-2019 vs 16.4.0 上添加 WinForms Core 3.1 项目(来自项目模板)并尝试开箱即用后看到这一点。清理或重建整个解决方案不起作用。
我刚刚重新加载了我的解决方案..即文件/关闭解决方案,然后重新打开它并重建它解决了问题。
对我来说,事实证明这是一个 nuget 源凭据问题。我最近更改了用于访问 nexus 服务器的密码,当尝试通过 Windows 凭据管理器访问该服务器上的 nuget 时,Visual Studio 仍在使用旧密码。要修复它,我必须在凭据管理器中删除那些过时凭据的条目,之后,当我进行 nuget 还原时,它提示我输入密码,让我输入新密码,该密码再次保存在凭据管理器中。您可以使用 CmdKey.exe 从 cmd 行访问凭证管理器。
dotnet restore solutionfilename.sln