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
また、パッケージを復元するように促されました。復元をクリックすると、いつもと同じエラーが発生しました。
エラーメッセージに基づいて、もはや存在しないバージョンを探しているように見え、どのパッケージソースを選択したかわかりません。 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ファイル間でそのパッケージが同期していない可能性があります
手動でクリーンアップを実行するには、次の手順に従ってください
手順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>
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
ノードを削除することでした。
これは少し遅いかもしれませんが、それはまだ誰かを助けるでしょう。コードをチェックインしようとしてこの種のエラーが発生した場合、パッケージを再度インストールおよびアンインストールしたことを意味するため、含まれている変更の下でパッケージを見つける必要があります。この例では、TFSを使用しています。除外または元に戻す。これで問題が解決します。
この種のエラーは、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に更新すると、問題が解決します。
理由はわかっています。C:\ Program Files(x86)\ Microsoft SDKs\NuGetPackagesフォルダにあります。以前にインストールしたパッケージがあります。