あるコンピューターでプロジェクトをチェックインし、別のコンピューターでチェックアウトしたところ、NuGetによってインストールされたバイナリーが見つからないことがわかりました。ソース管理にもチェックインできましたが、より良い解決策があるようです。
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
私はそれらの指示に従いましたが、今では.nuget
フォルダーがあり、.csprojファイルに次のエントリがあります:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
それでも、ソリューションを再構築しても、不足しているパッケージは復元されません。
私は何が欠けていますか?この問題を診断するにはどうすればよいですか?
Nugetパッケージマネージャーコンソールで次のコマンドを実行すると、パッケージの復元を強制的に実行できることに注意してください。
更新パッケージ-再インストール
ソリューション内のすべてを強制的に再インストールします。
更新パッケージ-再インストール-ProjectName myProj
MyProjプロジェクトのすべてを強制的に再インストールします。
注:これは核オプションです。このコマンドを使用すると、インストールしたパッケージと同じバージョンを取得できない場合があり、問題が発生する可能性があります。これは、ソリューションレベルではなくプロジェクトレベルで発生する可能性が低くなります。
-safe
コマンドラインパラメータオプションを使用して、同じメジャーバージョンとマイナーバージョンのコンポーネントを使用して、新しいバージョンへのアップグレードを制限できます。このオプションは後で追加され、コメントに記載されている問題の一部を解決します。
更新パッケージ-再インストール-安全
この投稿に出くわした人は、これを読んでください。
NuGet 2.7+では、Automatic Package Restoreを紹介しました。これは、MSBuildプロセスを変更しないため、ほとんどのアプリケーションにとってはるかに優れたアプローチであると考えられています。頭痛が少ない。
開始するためのリンク:
不足しているパッケージ/バイナリがあるプロジェクトでパッケージ復元モードを有効にしましたか?復元モードを有効にするときにパッケージを正しくインストールする必要があるという既知の問題があります。
http://nuget.codeplex.com/workitem/1879
元のリンクは無効です。これは代替品かもしれません: https://github.com/NuGet/Home/issues/1968
次のいずれかの方法を選択する必要があります。
すべてのソリューションのプロジェクトで、名前でパッケージを再インストールします。
Update-Package –reinstall <packageName>
パッケージを名前で再インストールし、すべてのソリューションのプロジェクトの依存関係を無視します。
Update-Package –reinstall <packageName> -ignoreDependencies
プロジェクト内の名前でパッケージを再インストールする:
Update-Package –reinstall <packageName> <projectName>
特定のプロジェクトのすべてのパッケージを再インストールします。
Update-Package -reinstall -ProjectName <projectName>
ソリューション内のすべてのパッケージを再インストールします。
Update-Package -reinstall
2つのシナリオでこの問題に遭遇しました。
まず、msbuild.exeを使用してコマンドラインからソリューションをビルドしようとしています。第二に、TFSとCIを使用してビルドサーバーでslnとそれを含むプロジェクトをビルドしようとすると。
参照が欠落しているというエラーが表示されます。ローカルビルドディレクトリとTFSサーバーの両方を調べると、/ packagesフォルダーが作成されておらず、nugetパッケージがコピーされていないことがわかります。アレクサンドルの答えに記載されている指示に従うと http://nuget.codeplex.com/workitem/1879 もうまくいきませんでした。
VS2010を介してパッケージの復元を有効にし、VS2010内からのみビルドが機能するのを見てきました。繰り返しますが、msbuildの使用は失敗します。私の回避策はおそらく完全に無効ですが、私の環境では、コマンドラインビルドとTFSのCIビルドからすべてが機能します。
。\ nugetに移動して、.nuget\NuGet.targetsファイルの次の行を変更しました。
から:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>
to:(注意、変数を引用符なしで)
<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>
ディレクトリにスペースが含まれる場合、これは失敗しますが、ディレクトリにスペースがないため、この回避策によりビルドが正常に完了することを理解しています...当分の間。
ビルドで診断レベルのログを有効にすると、msbuildによって実行されているコマンドを表示するのに役立ちます。これが、ターゲットファイルを一時的にハッキングするようになった理由です。
VS 2017
[ツール]> [NuGetパッケージマネージャー]> [パッケージマネージャーの設定]> [全般] [すべてのNuGetキャッシュをクリア]をクリックします。
他に何かがうまくいかなかった場合、試してください:
私のために働いたので、試してみるのは簡単です。
この問題が発生する可能性のある他の人のために、Visual Studioを閉じてプロジェクトを再度開くことで問題を解決できました。プロジェクトがロードされると、パッケージは初期化段階で復元されました。
私にとっては、.csprojにNuGetPackageImportStampという空のタグがありました
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
理想的には、有効なGUIDが含まれている必要があります。
上記のタグを削除してから、「Nugetsの復元」が機能しました。
他の回答のどれもあなたのために働かない場合、私のために働いた唯一のものだった次を試みなさい:
.csproj
ファイルを見つけて、テキストエディターで編集します。
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
ファイルで.csproj
タグを見つけて、ブロック全体を削除します。
ソリューション内のすべてのパッケージを再インストールします。
Update-Package -reinstall
この後、ナゲットパッケージを復元する必要があります。これは、プロジェクトを別の場所に移動した場合にのみ発生するフリンジケースである可能性があります。
新しいプロジェクトをゼロから作成し、すべてのソースファイルをコードとともにインポートするのに最も適した回避策です。私のプロジェクトはそれほど複雑ではなかったので、そこから問題はありませんでした。
システムでシステムの復元を行った後、NuGetパッケージが破損し、約2日間バックアップしました。 (その間にNuGetパッケージがインストールされていました。)修正するには、ユーザープロファイルの.nuget\packagesフォルダーに移動し、パッケージを見つけて削除する必要がありました。その場合にのみ、Visual Studioはパッケージを最新の状態にプルダウンし、参照として適切に追加します。
奇妙なことが起こり、Visual Studioを使用して自動的に復元できないことがあります。その場合、NuGetパッケージマネージャーコンソールを使用できます。 ツール-> NuGetパッケージマネージャー->パッケージマネージャーコンソールからVisual Studio内で開きます。コンソール内のコマンドは簡単です。コマンドの入力中にコンテキストヘルプを表示するには、ボタンを押すだけで、入力している文字で始まるすべてのオプションが表示されます。そのため、log4netなどのパッケージがインストールされていない場合、次のコマンドを入力します。
インストールパッケージlog4net
インストールするバージョンの指定、パッケージの更新、パッケージのアンインストールなど、さらに多くのことができます。
Visual Studioが変人のように振る舞ったときに、コンソールを使用して手伝わなければなりませんでした。
次のいずれかの理由でパッケージの自動復元が失敗します:
次の記事では、ポイント1〜3について詳しく説明しています。 https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
私の状況では他のソリューションはどれもうまくいきませんでした:
AspNetCore依存関係がインストール/アンインストールされ、キャッシュされていました。 「AspNetCore.All」は、適切に更新/再インストール/削除することを拒否します。そして、私が何をしたかに関係なく、キャッシュされた依存関係を使用します(互換性がなかったため)。
PackageReference
を削除しますbin
、obj
フォルダーを削除しますTools > Nuget Package Manager > Package Manager Settings
およびClear all Nuget caches
に移動します。一部のアイテムの削除に失敗する可能性があるため、コンソールを確認します-フォルダーパスをコピーして、Visual Studioを終了します。それでもうまくいかない場合は、繰り返しますが、Windowsエクスプローラーでドライブでnuget
を検索し、キャッシュのように見えるものをすべて削除します。
vs2015 no nuget復元の問題を有効にしません。私の解決策:
フォルダ.nugetを追加し、ディレクトリ.nugetにファイルNuGet.ConfigおよびNuGet.targetsを追加します
各プロジェクトファイルの追加:ビルド
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>
私の場合、中止されたNugetの復元試行により、ソリューション内のpackages.config
filesの1つが破損していました。 git作業ツリーをチェックする前に、これを発見しませんでした。ファイルの変更を元に戻した後、Nugetの復元は再び機能していました。
VS2017で、ソリューション=> Open CommandLine => Developer Command Lineを右クリックします。
開いたら、入力します(その後Enterを押します)
dotnet restore
これにより、すべて/すべてのパッケージが復元され、実行内容の素敵なコンソール出力が得られます...
Nugetを機能させるショートカットがあります。1。インターネット接続またはNugetのURLがVS Toolsオプションメニューで適切であることを確認します。2.ソリューションの.nugetまたはnugetフォルダーを確認します。
パッケージフォルダーが存在する場合は削除
パッケージマネージャーコンソールを開き、このコマンドを実行します
私が直面しているエラーが「リモートサーバーに接続できない」場合は、上記のコメントで提供されているチェックに加えて、このチェックを行うことも有益です。
パッケージをダウンロードできるNUGETパッケージソースが2つあることがわかりました([ツール]-> [Nugetパッケージマネージャー]-> [パッケージマネージャーの設定]内)。パッケージソースの1つが機能しておらず、Nugetはそのソースからのみダウンロードしようとしていました。
ダウンロードするためにパッケージソースを変更すると、次のようになりました: https://www.nuget.org/api/v2/ 設定で明示的に