私はこの問題を調べましたが、解決策はどれもうまくいきませんでした。 Visual Studio Professional 2015がインストールされており、TFSを使用しています。私のNuGetのバージョンは3.1.6です。この問題は私のC#Web API/MVCプロジェクトでのみ起こっています。
以下のエラーが出ます。
このプロジェクトは、このコンピュータに存在しないNuGetパッケージを参照しています。それらをダウンロードするには、NuGet Package Restoreを使用してください。詳細については、 http://go.Microsoft.com/fwlink/?LinkID = 322105 を参照してください。不足しているファイルは..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.propsです。
今日も同じエラーがありました(まったく同じパッケージがありません)。 MVC + Web APIプロジェクトも作成しました。
アプリファイル(.csprojを含む)ファイルを別の場所に移動したために発生しました。手動で.slnファイルを更新しましたが、すべてのパッケージの依存関係は(Visual Studio 2015).csprojファイルに保存されています。
.csprojファイルを編集し、(packagesフォルダを含む)solutionフォルダへの相対パスを修正することで、問題が解決しました。
私は.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>
注意 - これはプロジェクトだけでなくソリューション全体のパッケージを更新します。
ソリューションの構築中にエラーが発生するもう1つ不足しているnugetパッケージがある場合は、[ツール]> [Nugetパッケージマネージャ]> [パッケージマネージャコンソール]からNugetコマンドコンソールを使用して次のコマンドを使用します。現在のすべてのパッケージを再インストールします。
アップデートパッケージ - 再インストール
私はこの正確なイライラするメッセージを持っていました。最後に私にとってうまくいったのは、/ packages内のすべてのファイルとフォルダーを削除し、VSに次のビルドのすべてを再取得させることでした。
Tiberiuは正しいです。ファイルが移動され、この問題が発生したため、.csprojファイルを編集する必要がありました。
<Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
ファイルの一番上と一番下で変更しました
<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
この問題を解決するために、.csprojファイルから次のコードを削除しました。
<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('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />
2つの答えの組み合わせは私のために働いた。まず、1.0csバージョンへの参照を削除するように.csprojファイルを変更しました。
< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >
----Error---
< /Target>
そしてそれから
Update-Package -Reinstall
から、それは働いた。
私はVS2012を使用していて同じエラーに直面しています。次のTargetタグを.csprojファイルから削除し、エラーなしでコンパイルを開始しました。
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-- Error messages within Target Tag
</Target>
ここでいくつかの答えを詳しく説明すると、はい、.csprojファイルから次のブロックを削除することができます。
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
これで問題は解決しましたが、私の場合は、.NET.Compilerと.CodeDom.Providersへの参照が、バージョンが異なることに気付きました。
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\
私のpackages.configが以下のものだけを参照していた場合:
<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"
.csprojファイルから1.0.0項目を削除すると、問題が解決しました。
このようにして私のエラーが解決されました:Visual Studio 2015+ソリューションエクスプローラでアップデートのために.csprojファイルを開くには
プロジェクト名を右クリック - >プロジェクトのアンロード
プロジェクト名を右クリック - >編集.csproj
次の行を削除してください。
<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.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
<Error Condition="!Exists('packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
プロジェクト名を右クリック - >プロジェクトの再読み込み
最後にソリューションを構築しましょう。
私が抱えていた問題(すべてではないがいくつかのパッケージがビルドサーバーに復元されている)にここで遭遇した人のために、私のためのパズルの最後の部分は私のソリューションのルートにNuGet.configを追加して、 David Ebboがここで説明したようにファイル: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html 。
Ebboのブログ投稿から、私のためのファイルの内容は単純です
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>
更新:
NuGet APIのURLがv3で変更されました(2016年9月現在)。 からhttps://www.nuget.org/ /
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
エラーメッセージは完全に正確です。私はすべてのトリックを試しましたが、どれもうまくいきませんでした。プロジェクト(単純なMVC Webアプリケーションテスト)は、Windows 8.1 VS 2015 CommunityからWindows 10の新しいテストボックスに移動しました。VS2015の最新の更新プログラムがすべて適用されました。私は新しいバージョンのコンパイラパッケージさえもインストールできませんでした。
Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop
私はついにMicrosoft.Net.Compilers.1.0.0を古いプロジェクトから新しいプロジェクトにコピーしたところ、うまくいきました。それから私は他のパッケージを新しいバージョンにアップデートし始めることができました。私にとっては、小さなプロジェクトアップグレードプロセスのバグのように見えます。
注: 元のプロジェクトはVS 2015で作成されたもので、従来の方法論はありません。
私にとっては、パッケージは正しいパスの下にありましたが、パッケージフォルダー内のビルドフォルダーはありませんでした。私はそれが欠けていると言ったすべてのパッケージを削除してソリューションを再構築し、ビルドフォルダーと.propsファイルを正常に作成しました。それで、エラーメッセージは、何かがミスだったことを私に知らせることにおいて正しかったです。
私はGitのから展開アズールで失敗したビルド、として、この問題を持っていました。
私の.gitignoreが..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
からbuild
フォルダを除外したが判明。
build
フォルダがGitリポジトリにコミット(力)だったら、問題は解決しました。
私はこのエラーを修正しました、実際に私は私のパッケージフォルダーと.csprojファイル参照でMSTest.TestAdapter(1.1.0)を指していたMSTest.TestAdapter(1.3.2)の異なるバージョンを持っていました。すべてのMSTest.TestAdapter(1.1.0)をMSTest.TestAdapter(1.3.2)に置き換えましたが、これで問題は解決しました。
私にとって、私のgitignoreファイルは私のpackagesフォルダを無視していました。次のgitignore行が問題を引き起こしていました -
**/packages/*
削除し、それは私のパッケージフォルダを復元しました。これが他の人に役立つことを願っています。
私にとっての問題は、フルファイルパスが大きすぎるため、NuGetが自動的にパッケージを取得/更新できなかったことです。 深くネストされたフォルダの代わりに私のドキュメント内のフォルダに私の解決策を移動することによって修正されました 。
次に、ソリューションを右クリックして[Restore NuGet Packages]を選択し(それをビルドして実行させるだけであればおそらく不要です)、次に[Manage NuGet Packages for Solution]を選択してすべてのパッケージを取得できます最新バージョンにアップデートしました。
これは、MicrosoftのWebサイトからダウンロードしたサンプルのASP MVCアプリケーションの解決策です。
私は同じ問題を抱えていました、それは私が参照していたプロジェクトの1つがソリューションディレクトリの外にあったことが判明しました(そしてそれ故に同じ '/ packages'フォルダを共有しませんでした)。私にとって効果的な解決策は、参照プロジェクトの解決策を開き、そこで構築することでした。そのプロジェクトが構築されると、エラーは消えました。
私の場合、*。csprojファイルに<RestorePackages>true</RestorePackages>
がありませんでした。以前の回答で見たコードのスニペットを削除する必要はありませんでした。
これの一般的な原因は別のユーザー名です、Nugetはすべてを"C:\Users\USER_NAME\source\repos"
にダウンロードします。プロジェクトを別のユーザー名で以前にセットアップした場合、.csprojファイルにはその古いファイルが含まれている可能性がありますそこにユーザー名を入力し、単にそれを開いて"C:\Users\_OLD_USER_NAME\source\repos"
を"C:\Users\NEW_USER_NAME\source\repos"
に検索置換します。
多くの人が<Target>
タグを削除することでそれをコンパイルできるようにするかもしれないと提案しました。それでも、テストプロジェクトに使用すると副作用があることに注意してください。
コンパイル中にMSTest.TestAdapter
nugetパッケージに関連したエラーが発生しました。 <Target>
タグを削除することでその問題を解決しました。ビルドは成功しましたが、テストメソッドは発見不可能になりました。 Test Explorerはそのプロジェクトのテストメソッドをリストしませんし、Run TestまたはDebug Testも同様には動作しません。
Visual Studio 2017
と.Net framework 4.7
を使用しているときに私はこれに遭遇しました、それは他のバージョンで非常によく起こることができます
私はこの質問が古いことを認識しています、しかし私は今日この同じ状況に遭遇し、最近この問題を発見した人のために私の2セントを投入したいと思いました。私が手動でソリューションのサブフォルダーに移動してから削除し、Visual Studio 2017を使用してソリューションに追加したASP MVCプロジェクトでは、上記のエラーが発生していました。 "lib"と "packages"フォルダをMVCプロジェクトと同じサブフォルダのルートに移動することで私の問題は解決しました。
ヒントとして提案されたエラーメッセージを使用することもできます。解決方法のためにManage Packagesを見つけて、missing missing nugetパッケージをクリックしてください。
それでおしまい
私のソリューションのフォルダは ".NET Project"という名前でした。 「NETプロジェクト」に名前を変更することによってすべてが正常に機能しました。だから最初のドットは悪い考えでした。
これに対する解決策が見つからないため、prebuild.ps1という名前のソリューションのルートディレクトリにnuget.exeとpowershellスクリプトのコピーを次の内容で追加しました。
$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args
私は自分のビルドで ビルド前のスクリプトパス でこのPowerShellスクリプトを呼び出しました。
ソリューションファイルとプロジェクトフォルダと一緒にpackagesフォルダをコピーしたときに、Mineが動作しました。私はちょうど前の場所からpackagesフォルダをコピーしませんでした。
WebConfig
のCompiler Optionをコメントにします。
<!--<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>-->
パッケージ構成ファイル内のパッケージの最新バージョンを更新する
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />
問題がなければ再構築し、続行する必要はない場合は、プロジェクトを右クリックし、[プロジェクトのアンロード]をクリックします。もう一度プロジェクトを右クリックし、.csprojファイルを編集します。
Codedomのパスを検証し、それが以前のパスにnet45を持っていなかった、手動でそれを追加する、保存する、読み込む、再構築する。それはうまくいくはずです。
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
これがだれにも役立つかどうかはわかりませんが、ソリューションファイルをTFSに保存せずにローカルマシンからソースコードを削除したときに、この問題が発生しました。 (最初の開発中は、ソリューションエクスプローラーでプロジェクトを右クリックしてチェックインしていましたが、ソリューション自体をチェックインすることを忘れていました)。 .slnファイルはありません。そのため、VSでは、ファイル - >ソース管理 - >詳細 - サーバーから開くを選択し、.csprojファイルを開きました。そこから、[Save All]を実行したところ、.slnファイルを保存する場所を尋ねられました。この.slnファイルを他のフォルダ(App_Data、App_Startなど)と一緒にプロジェクトディレクトリに保存していました。最上位ディレクトリではありません。プロジェクトフォルダと同じレベルにあるように、プロジェクトフォルダと同じディレクトリに.slnファイルを保存する必要があることがわかりました。すべての私の道は解決し、私はそれを再び造ることができた。
DevOps /ビルドエンジニアにとっては、おそらくこのSLAを実行しているnuget restore
を影響を受けたSLNに対して修正するか、SLNがなければプロジェクトを作成することができます。私たちのすべてのUWPプロジェクトのために私たちのCI/CDビルドのためにこれをしなければなりません。
call "%VS140COMNTOOLS%VsDevCmd.bat"
call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
call nuget restore MyStuff.SLN
またはcall nuget restore MyStuff.csproj
。