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

后端 未结 6 1190
一个人的身影
一个人的身影 2021-01-03 23:39

I used the GitHub extension of Visual Studio 2015 to clone my project onto a new computer. I try to restore packages and I get an error that says:

NuGet Pa         


        
相关标签:
6条回答
  • 2021-01-04 00:03

    This kind of error can happen also using an old version of nuget.exe. For example, if you download the agent.zip of TFS 2015, inside it has version 3.2.1:

    \Agent\Worker\Tools\nuget.exe

    That version can give the error "Unable to find version '3.7.1' of package 'NUnit'." with a solution created with VS 2015. (NUnit3TestAdapter.3.9.0 doesn't give error, though)

    Updating nuget.exe to 5.2 solves the problem.

    0 讨论(0)
  • 2021-01-04 00:05

    I moved my project in relation to where the NuGet packages had originally been stored in my project, and I eventually discovered that this causes a problem with that .csproj file that might not be immediately obvious.

    Following the move and after doing a NuGet Package Restore, a second entry had been added to the EnsureNuGetPackageBuildImports target of my .csproj file reflecting the relative path of the new location.

    The target now looked like the following:

      <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>
    

    Notice the two entries, with different paths to where the packages were located. This meant one of them (the first one, which was from before I moved the project) would always fail.

    The fix was simple enough. I just removed the first Error node from the Target.

    I also found that there was a similar problem in the initial Import nodes of the root Project node.

    I had the following:

    <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')" />
    

    Again, the fix was just to remove the erroneous Import node.

    0 讨论(0)
  • 2021-01-04 00:06

    Based on your error message looks like you are looking for a version that no longer exists and cannot tell which Package source you have selected. I feel like you are looking for version 2.0.0 which is not available in nuget.org repository. The latest one is 2.0.0-rc and it is pre release candidate.

    Please try this command if you want to get the latest version

    Install-Package -Id Microsoft.Net.Compilers -Version 2.0.0-rc -Source nuget.org
    

    If you want the latest stable version (1.3.2), try this command

    Install-Package -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
    

    UPDATE If the package still cannot be installed, then that package may be out of sync between packages.config, packages/ folder and .csproj file

    Please follow these steps to perform manual cleanup

    1. Close visual studio.
    2. Open .csproj in a notepad or some text editor and manually remove all entries related to Microsoft.Net.Compilers
    3. Open packages.config in a notepad or some text editor and and remove entry for the Microsoft.Net.Compilers package
    4. Go to packages/ folder in windows explorer and delete the Microsoft.Net.Compilers folder
    5. Now start the visual studio and open the solution.
    6. Now try to install the package again.

    Some of the entries that you may have to remove from .csproj as part of step 2 are these

    <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>
    
    0 讨论(0)
  • 2021-01-04 00:17

    I know why, it's in the C: \ Program Files (x86) \ Microsoft SDKs \ NuGetPackages folder. There are packages that you have installed before.

    0 讨论(0)
  • 2021-01-04 00:21

    I had a similar error after a clean install of Visual Studio 2017 and had to do the following to get it to automatically restore missing NuGet packages successfully. In VS, go to "Tools > Options > NuGet Package Manager > Package Sources", and ensure the appropriate package sources show and are checked.

    See below. The addition of the nuget.org package source at the top tells VS to go online to download the packages from NuGet if it can’t find the appropriate versions on the local machine.

    0 讨论(0)
  • 2021-01-04 00:21

    This might be a bit late but it will still help somebody. When you try to check in your code and you get this kind of an error, it means that you had the package installed and uninstalled it again, so you just need to locate the package under included changes, in my example i an using TFS, and exclude or undo. this will solve the issue.

    0 讨论(0)
提交回复
热议问题