项目 PROJECT 的 NuGet 包还原失败:无法找到包 'Microsoft.Net.Compilers' 的版本 2.0.0
NuGet Package restore failed for project PROJECT: Unable to find version 2.0.0 of package 'Microsoft.Net.Compilers'
我使用 Visual Studio 2015 的 GitHub 扩展将我的项目克隆到新计算机上。我尝试恢复包,但收到一条错误消息:
NuGet Package restore failed for project PROJECT: Unable to find version 2.0.0 of package 'Microsoft.Net.Compilers'
我已经研究了一些关于类似问题的其他问题,但是 none 这些解决方案中的一些对我有用。
我尝试删除 packages 文件夹,再次打开 Visual Studios 然后重建。那并没有解决它。
我尝试在程序包管理器控制台中手动安装 Microsoft.Net.Compilers。
PM> Install-Package Microsoft.Net.Compilers
我尝试从 csproj 文件中删除这段代码(这似乎对某些人有效):
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
我尝试使用
重新安装所有软件包
Update-Package –reinstall
到目前为止,我还没有解决这个问题。任何帮助表示赞赏。
编辑:
I tried the response below and received this error:
Install-Package : Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.
At line:1 char:16
+ Install-Package <<<< -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
+ CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetMissingPackages,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
还提示我恢复包。当我点击恢复时,我得到了和往常一样的错误。
根据您的错误消息,您似乎正在寻找一个不再存在的版本,并且无法判断您选择了哪个包源。我觉得您正在寻找 nuget.org 存储库中不可用的版本 2.0.0。最新的是 2.0.0-rc,它是预发布候选版本。
如果您想获取最新版本,请尝试此命令
Install-Package -Id Microsoft.Net.Compilers -Version 2.0.0-rc -Source nuget.org
如果你想要最新的稳定版本(1.3.2),试试这个命令
Install-Package -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
更新
如果仍然无法安装该包,则该包可能在 packages.config、packages/ 文件夹和 .csproj 文件
之间不同步
请按照以下步骤执行手动清理
- 关闭visual studio.
- 在记事本或某些文本编辑器中打开 .csproj 并手动删除与 Microsoft.Net.Compilers
相关的所有条目
- 在记事本或某些文本编辑器中打开 packages.config,然后删除 Microsoft.Net.Compilers 包的条目
- 转到 windows 资源管理器中的 packages/ 文件夹并删除 Microsoft.Net.Compilers 文件夹
- 现在启动 visual studio 并打开解决方案。
- 现在再次尝试安装包。
作为第 2 步的一部分,您可能必须从 .csproj 中删除的一些条目如下
<Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
<NuGetPackageImportStamp></NuGetPackageImportStamp>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props'))" />
</Target>
我知道为什么,它在 C:\Program Files (x86)\Microsoft SDKs\NuGetPackages 文件夹中。有您之前安装过的软件包。
这可能有点晚了,但它仍然会对某些人有所帮助。当您尝试签入您的代码并遇到此类错误时,这意味着您已经安装并再次卸载了该包,因此您只需要在包含的更改下找到该包,在我的示例中,我使用的是 TFS,并排除或撤消。这将解决问题。
全新安装 Visual Studio 2017 后,我遇到了类似的错误,必须执行以下操作才能成功自动恢复丢失的 NuGet 包。在 VS 中,转到 "Tools > Options > NuGet Package Manager > Package Sources",并确保显示并选中适当的包源。
见下文。在顶部添加 nuget.org 包源告诉 VS 如果在本地计算机上找不到合适的版本,请联机从 NuGet 下载包。
我根据 NuGet 包最初存储在我的项目中的位置移动了我的项目,我最终发现这会导致 .csproj
文件出现问题,该问题可能不会立即显现出来。
在移动之后并执行 NuGet 包还原后,第二个条目已添加到我的 .csproj
文件的 EnsureNuGetPackageBuildImports
目标中,反映了新位置的相对路径。
目标现在如下所示:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props'))" />
</Target>
注意这两个条目,packages
所在的路径不同。这意味着其中一个(第一个,在我移动项目之前的)总是会失败。
修复非常简单。我刚刚从 Target
.
中删除了第一个 Error
节点
我也发现根Project
节点的初始Import
节点也有类似的问题
我有以下内容:
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" />
同样,修复只是删除错误的 Import
节点。
使用旧版本的 nuget.exe 也会发生这种错误。比如你下载TFS 2015的agent.zip,里面有3.2.1版本:
\Agent\Worker\Tools\nuget.exe
使用 VS 2015 创建的解决方案,该版本可能会出现错误 "Unable to find version '3.7.1' of package 'NUnit'."。(不过,NUnit3TestAdapter.3.9.0 不会出现错误)
将 nuget.exe 更新到 5.2 解决了问题。
这是我的错误:“项目引用了这台计算机上丢失的 NuGet 包。使用 NuGet 包还原来下载它们。”
这是我的解决方案:我必须确保在“管理 Nuget 包”中检查了我的包源 window。
我在 VS 2019 上也遇到了类似的问题,这个对我有用,只需转到“工具”>“选项”>“NuGet 包管理器”>“常规”并清除所有 NuGet 缓存。
见下图
转到导航栏中的工具以及工具和功能,检查您的框架是否已下载
enter image description here
我使用 Visual Studio 2015 的 GitHub 扩展将我的项目克隆到新计算机上。我尝试恢复包,但收到一条错误消息:
NuGet Package restore failed for project PROJECT: Unable to find version 2.0.0 of package 'Microsoft.Net.Compilers'
我已经研究了一些关于类似问题的其他问题,但是 none 这些解决方案中的一些对我有用。
我尝试删除 packages 文件夹,再次打开 Visual Studios 然后重建。那并没有解决它。
我尝试在程序包管理器控制台中手动安装 Microsoft.Net.Compilers。
PM> Install-Package Microsoft.Net.Compilers
我尝试从 csproj 文件中删除这段代码(这似乎对某些人有效):
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
我尝试使用
重新安装所有软件包Update-Package –reinstall
到目前为止,我还没有解决这个问题。任何帮助表示赞赏。
编辑:
I tried the response below and received this error:
Install-Package : Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.
At line:1 char:16
+ Install-Package <<<< -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
+ CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetMissingPackages,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
还提示我恢复包。当我点击恢复时,我得到了和往常一样的错误。
根据您的错误消息,您似乎正在寻找一个不再存在的版本,并且无法判断您选择了哪个包源。我觉得您正在寻找 nuget.org 存储库中不可用的版本 2.0.0。最新的是 2.0.0-rc,它是预发布候选版本。
如果您想获取最新版本,请尝试此命令
Install-Package -Id Microsoft.Net.Compilers -Version 2.0.0-rc -Source nuget.org
如果你想要最新的稳定版本(1.3.2),试试这个命令
Install-Package -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
更新 如果仍然无法安装该包,则该包可能在 packages.config、packages/ 文件夹和 .csproj 文件
之间不同步请按照以下步骤执行手动清理
- 关闭visual studio.
- 在记事本或某些文本编辑器中打开 .csproj 并手动删除与 Microsoft.Net.Compilers 相关的所有条目
- 在记事本或某些文本编辑器中打开 packages.config,然后删除 Microsoft.Net.Compilers 包的条目
- 转到 windows 资源管理器中的 packages/ 文件夹并删除 Microsoft.Net.Compilers 文件夹
- 现在启动 visual studio 并打开解决方案。
- 现在再次尝试安装包。
作为第 2 步的一部分,您可能必须从 .csproj 中删除的一些条目如下
<Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
<NuGetPackageImportStamp></NuGetPackageImportStamp>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props'))" />
</Target>
我知道为什么,它在 C:\Program Files (x86)\Microsoft SDKs\NuGetPackages 文件夹中。有您之前安装过的软件包。
这可能有点晚了,但它仍然会对某些人有所帮助。当您尝试签入您的代码并遇到此类错误时,这意味着您已经安装并再次卸载了该包,因此您只需要在包含的更改下找到该包,在我的示例中,我使用的是 TFS,并排除或撤消。这将解决问题。
全新安装 Visual Studio 2017 后,我遇到了类似的错误,必须执行以下操作才能成功自动恢复丢失的 NuGet 包。在 VS 中,转到 "Tools > Options > NuGet Package Manager > Package Sources",并确保显示并选中适当的包源。
见下文。在顶部添加 nuget.org 包源告诉 VS 如果在本地计算机上找不到合适的版本,请联机从 NuGet 下载包。
我根据 NuGet 包最初存储在我的项目中的位置移动了我的项目,我最终发现这会导致 .csproj
文件出现问题,该问题可能不会立即显现出来。
在移动之后并执行 NuGet 包还原后,第二个条目已添加到我的 .csproj
文件的 EnsureNuGetPackageBuildImports
目标中,反映了新位置的相对路径。
目标现在如下所示:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props'))" />
</Target>
注意这两个条目,packages
所在的路径不同。这意味着其中一个(第一个,在我移动项目之前的)总是会失败。
修复非常简单。我刚刚从 Target
.
Error
节点
我也发现根Project
节点的初始Import
节点也有类似的问题
我有以下内容:
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" />
同样,修复只是删除错误的 Import
节点。
使用旧版本的 nuget.exe 也会发生这种错误。比如你下载TFS 2015的agent.zip,里面有3.2.1版本:
\Agent\Worker\Tools\nuget.exe
使用 VS 2015 创建的解决方案,该版本可能会出现错误 "Unable to find version '3.7.1' of package 'NUnit'."。(不过,NUnit3TestAdapter.3.9.0 不会出现错误)
将 nuget.exe 更新到 5.2 解决了问题。
这是我的错误:“项目引用了这台计算机上丢失的 NuGet 包。使用 NuGet 包还原来下载它们。”
这是我的解决方案:我必须确保在“管理 Nuget 包”中检查了我的包源 window。
我在 VS 2019 上也遇到了类似的问题,这个对我有用,只需转到“工具”>“选项”>“NuGet 包管理器”>“常规”并清除所有 NuGet 缓存。
见下图
转到导航栏中的工具以及工具和功能,检查您的框架是否已下载 enter image description here