2016-12-02 19 views
0

私は、Visual Studio 2015での自動パッケージ復元が機能しない理由を理解しようとしています。 私はそれを理解するので、何もする必要はありませんが、いくつかの設定を確認してください。ビルドすると、欠落しているパッケージを探して自動的にダウンロードします。 私は、15の個別のプロジェクトを持つソリューションを持っています。それらの大部分は、 "パッケージの欠落"のためにコンパイルされません。Visual Studio 2015のNuGet自動パッケージ復元は、おとぎ話/神話の獣ですか?

これらのプロジェクトにはNuGet(.nugetフォルダなど)はありません.NuGetの最新バージョンがあります。

Visual Studioでは、不足しているファイルはダウンロードされません。私はソリューションパッケージフォルダを削除しました。ビルド時にすべてのパッケージを再作成してダウンロードしますが、個々のプロジェクトごとにまだ見つからない参照が残っています。 私はパッケージマネージャコンソールにアクセスし、

Update-Package -reinstall 

を発行する場合は、パッケージがダウンロードおよびすべての作品。私はなぜそれが自動的にこれをしないのだろうかと思います。 これは正しいと思われますか?

+0

それが起こる次回は、「行方不明」の参照がポイントしているところを見てください。 .csprojファイルを開き、を見てください。私はそこに何か正しいものがないという気持ちがあります。 – Kiliman

+0

私はそれが多くの要因に依存しているとしか言えません。一度それが例えば元に戻っていて、あなたがVSを閉じたなら、それは永遠に復元を破ることができます。簡単な回避策は、MicrosoftからNuGet.exeをダウンロードし、 'nuget restore yoursolution.sln'を実行して強制的に復元することです。 –

+0

復元されたパッケージパスと参照先のパスが一致しているかどうかを確認しましたか? –

答えて

0

NuGet Restoreはパッケージディレクトリ内のファイルのみを復元しますが、プロジェクト内のファイルを復元したりプロジェクトを変更したりすることはありません。

たとえば、パッケージがある場合は、参照DLLを追加するか、プロジェクトにいくつかのコンテンツファイルを追加します。これらの参照dllとコンテンツファイルをプロジェクトから削除した後は、このパッケージを復元するときには追加されません。これはあなたのプロジェクトがコンパイル時に見つからなかったパカクを見つけることができなくなる原因になります。

"Update-Package -reinstall"コマンドを使用して、パッケージ参照とコンテンツファイルをプロジェクトに強制的に再インストールする必要があります。

更新チームで共有プロジェクトの例:次の

は私の溶液構造で、CommDLLプロジェクトは、いくつかのNuGetパッケージをインストールし、ソリューション全体をソースコントロールによって管理されています。

enter image description here

私は別のユーザーアカウントを使用してCommDLLプロジェクトに別のNuGetパッケージをインストールするソース管理から別のマシン上でこのソリューションをダウンロードしてください。次に、新しいインストールされたパッケージからいくつかのコンテンツを使用し、プロジェクトを成功させます。 パッケージdllがプロジェクトに追加され、.csprojファイルに正しいHintPathが設定されていることを確認してください。

<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> 
    <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

次に、この変更されたプロジェクトをソースコントロールにチェックインします。 .csprojファイルとpackages.configファイルがでチェックされていることを確認してください。

enter image description here

は今、私が変更されたコンテンツを取得するために別のマシン上で最新バージョンを取得します。ソース管理から最新のバージョンをチェックアウトした後、プロジェクトはコンパイルされていないため、パッケージ参照は警告と共に表示されます。つまり、パッケージは復元されません。してくださいこのプロジェクトを再構築し、それはR ESTOREパッケージプロジェクトの意志(あなたのVisual Studio 2015は有効持つことを確認してください「NuGetが不足しているパッケージのダウンロードを許可する」と「自動的のVisual Studioでビルド中に不足しているパッケージをチェックします "を作成してください)。

enter image description here

+0

私が本当に知っているのは、このトピックに関する相反するアドバイスがあるようです。 「VS 2015アップデート3では、何もする必要はありません」から「ソリューションを変更してNuget.Configファイルを作成する」のすべてが含まれています。ソリューションにパッケージを追加する人が複数いる場合は、それがうまくいくように思えます。 VSで実装されている方法では、NuGetパッケージマネージャを使用するだけですべてが処理されますが、それは機能しません。私は、チームと共有プロジェクトを含むサンプル実装を見たいと思っています。 – user2033791

+0

packagesディレクトリはobjとbinディレクトリのように扱われるべきようです。ソースコントロールにチェックインされず、プロジェクトをロードする人のために再作成されます。 – user2033791

+0

ここに意見があります:http://stackoverflow.com/questions/18376313/setting-up-a-common-nuget-packages-folder-for-all-solutions-when-some-projects-a – user2033791

関連する問題