【问题标题】:NuGet Package restore failed for project PROJECT: Unable to find version 2.0.0 of package 'Microsoft.Net.Compilers'项目 PROJECT 的 NuGet 包还原失败:找不到包“Microsoft.Net.Compilers”的 2.0.0 版
【发布时间】:2017-04-16 05:11:09
【问题描述】:

我使用 Visual Studio 2015 的 GitHub 扩展将我的项目克隆到新计算机上。我尝试恢复软件包,但收到一条错误消息:

NuGet Package restore failed for project PROJECT: Unable to find version 2.0.0 of package 'Microsoft.Net.Compilers'

我已经研究了一些关于类似问题的其他问题,但这些解决方案都没有对我有用。

我尝试删除包文件夹,再次打开 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

它还提示我恢复软件包。当我点击恢复时,我得到了和往常一样的错误。

【问题讨论】:

    标签: asp.net-mvc visual-studio-2015 nuget-package-restore


    【解决方案1】:

    根据您的错误消息,您正在寻找一个不再存在且无法确定您选择了哪个包源的版本。我觉得您正在寻找 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 文件之间不同步

    请按照以下步骤进行手动清理

    1. 关闭视觉工作室。
    2. 在记事本或某些文本编辑器中打开 .csproj 并手动删除与 Microsoft.Net.Compilers 相关的所有条目
    3. 在记事本或某些文本编辑器中打开 packages.config,然后删除 Microsoft.Net.Compilers 包的条目
    4. 在 Windows 资源管理器中转到 packages/ 文件夹并删除 Microsoft.Net.Compilers 文件夹
    5. 现在启动 Visual Studio 并打开解决方案。
    6. 现在再次尝试安装软件包。

    作为步骤 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>
    

    【讨论】:

    • 感谢您的回复。我尝试了这两种方法,每次都遇到此错误:Install-Package:解决方案中缺少一些 NuGet 包。需要恢复包以构建依赖关系图。在执行任何操作之前还原包。在 line:1 char:16 + Install-Package
    • 请看我的更新。看起来您的 Microsoft.Net.Compilers 包可能在 packages.config、packages/ 文件夹和 .csproj 文件之间不同步。在尝试再次安装之前,您必须手动清理它。
    【解决方案2】:

    在全新安装 Visual Studio 2017 后,我遇到了类似的错误,必须执行以下操作才能使其自动成功恢复丢失的 NuGet 包。在 VS 中,转到“工具 > 选项 > NuGet 包管理器 > 包源”,并确保显示并检查了相应的包源。

    见下文。在顶部添加了 nuget.org 包源,告诉 VS 如果在本地计算机上找不到合适的版本,则可以在线从 NuGet 下载包。

    【讨论】:

    • 仅供参考:我的有 Microsoft Visual Studio Offline Packages 的来源,并且路径“C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\”没有列出 NuGet pkgs在项目中。必须添加一个带有路径的新包源 - “api.nuget.org/v3-index/index.json”,然后恢复 Nuget pkgs 或重建工作。
    【解决方案3】:

    这可能有点晚了,但它仍然会帮助某人。当您尝试签入代码并收到此类错误时,这意味着您已安装并再次卸载了该软件包,因此您只需在包含的更改下找到该软件包,在我的示例中,我使用了 TFS,并排除或撤消。这将解决问题。

    【讨论】:

      【解决方案4】:

      我根据 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 节点。

      【讨论】:

        【解决方案5】:

        我在 VS 2019 上也遇到了类似的问题,这个对我有用,只需转到工具 > 选项 > NuGet 包管理器 > 常规并清除所有 NuGet 缓存。

        见下图

        【讨论】:

          【解决方案6】:

          使用旧版本的 nuget.exe 也可能发生此类错误。比如你下载TFS 2015的agent.zip,里面有3.2.1版本:

          \Agent\Worker\Tools\nuget.exe

          该版本可能会给出错误“无法找到包 'NUnit' 的版本 '3.7.1'。”使用 VS 2015 创建的解决方案。(不过,NUnit3TestAdapter.3.9.0 不会出错)

          将 nuget.exe 更新到 5.2 即可解决问题。

          【讨论】:

            【解决方案7】:

            我知道为什么,它位于 C:\Program Files (x86)\Microsoft SDKs\NuGetPackages 文件夹中。您之前安装了一些软件包。

            【讨论】:

              【解决方案8】:

              这是我的错误:“该项目引用了此计算机上缺少的 NuGet 包。使用 NuGet 包还原下载它们。”

              这是我的解决方案:我必须确保在“管理 Nuget 包”窗口中检查了我的包源。

              【讨论】:

                【解决方案9】:

                转到导航栏中的工具和工具和功能并检查您的 freamworks 是否已下载 enter image description here

                【讨论】:

                • 请修正您的回答中的拼写错误
                • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-12-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多