web-dev-qa-db-ja.com

プロジェクトPROJECTのNuGetパッケージの復元に失敗しました:パッケージ 'Microsoft.Net.Compilers'のバージョン2.0.0が見つかりません

Visual Studio 2015のGitHub拡張機能を使用して、プロジェクトを新しいコンピューターに複製しました。パッケージを復元しようとすると、次のようなエラーが表示されます。

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

私は同様の問題に関する他のいくつかの質問を検討しましたが、それらの解決策のどれもまだ私のために働いていません。

パッケージフォルダーを削除して、Visual Studioを再度開き、再構築してみました。それは解決しませんでした。

パッケージマネージャーコンソールで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

また、パッケージを復元するように促されました。復元をクリックすると、いつもと同じエラーが発生しました。

12
Dylan Caudill

エラーメッセージに基づいて、もはや存在しないバージョンを探しているように見え、どのパッケージソースを選択したかわかりません。 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

[〜#〜] update [〜#〜]パッケージをまだインストールできない場合、packages.config、packages/folder、および.csprojファイル間でそのパッケージが同期していない可能性があります

手動でクリーンアップを実行するには、次の手順に従ってください

  1. Visual Studioを閉じます。
  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>
14
Vinod

Visual Studio 2017のクリーンインストール後に同様のエラーが発生しました。不足しているNuGetパッケージを自動的に正常に復元するには、次の手順を実行する必要がありました。 VSで、[ツール]> [オプション]> [NuGetパッケージマネージャー]> [パッケージソース]に移動し、適切なパッケージソースが表示され、チェックされていることを確認します。

下記参照。上部にnuget.orgパッケージソースを追加すると、VSがローカルマシンで適切なバージョンが見つからない場合にオンラインでNuGetからパッケージをダウンロードするように指示されます。

enter image description here

3
Tawab Wakil

NuGetパッケージが元々プロジェクトに保存されていた場所に関連してプロジェクトを移動したところ、すぐに明らかにならないかもしれない.csprojファイルに問題が発生することがわかりました。

移動後、NuGetパッケージの復元を実行した後、新しい場所の相対パスを反映する.csprojファイルのEnsureNuGetPackageBuildImportsターゲットに2番目のエントリが追加されました。

ターゲットは次のようになりました。

  <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が配置されている場所へのパスが異なる2つのエントリに注目してください。これは、そのうちの1つ(プロジェクトを移動する前の最初のもの)が常に失敗することを意味していました。

修正は簡単でした。 Errorから最初のTargetノードを削除しました。

ルートImportノードの最初のProjectノードにも同様の問題があることがわかりました。

私は次のものを持っていました:

<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ノードを削除することでした。

1
crush

これは少し遅いかもしれませんが、それはまだ誰かを助けるでしょう。コードをチェックインしようとしてこの種のエラーが発生した場合、パッケージを再度インストールおよびアンインストールしたことを意味するため、含まれている変更の下でパッケージを見つける必要があります。この例では、TFSを使用しています。除外または元に戻す。これで問題が解決します。

1
Serame Simon

この種のエラーは、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に更新すると、問題が解決します。

0
Carlos Quintero

理由はわかっています。C:\ Program Files(x86)\ Microsoft SDKs\NuGetPackagesフォルダにあります。以前にインストールしたパッケージがあります。

0
Xoan Sao