新しいマシンにワークスペースを作成し、TFSからプロジェクトの最新情報を取得し、NuGet Restoreを有効にして、次の(簡略化した)出力を取得しました。
1>------ Rebuild All started: Project: Caching, Configuration: Debug Any CPU ------
1> Restoring NuGet packages...
1> To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'.
1> All packages listed in packages.config are already installed.
1> Caching Framework -> C:\MyProjLocation\Caching\bin\Debug\Caching.dll
2>------ Rebuild All started: Project: Library, Configuration: Debug Any CPU ------
2>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1635,5): warning MSB3245: Could not resolve this reference. Could not locate the Assembly "LumenWorks.Framework.IO". Check to make sure the Assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2>C:\MyProjLocation\Library\SomeClass.cs(2,7,2,17): error CS0246: The type or namespace name 'LumenWorks' could not be found (are you missing a using directive or an Assembly reference?)
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
NuGetパッケージはどれも復元されませんでした(10個以上あります-読みやすくするために上記の出力から削除しました)。
NuGetは2番目のプロジェクト(ライブラリ)のパッケージを復元しようとしてさえいないようです。
NuGetターゲットインポートをLibrary.csproj
ファイルのCSharpターゲットインポートの下に移動しようとしましたが、 ここで述べたように ですが、まだ機能していません。
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
Visual Studio 2013でNuGetの最新バージョン(2.7.41101.371)を実行しています。
編集:packages.config
が存在し、NuGetパッケージマネージャーに正しいパッケージでチェックされたライブラリプロジェクトがあります。
NuGet.targetsファイルもディスクから削除しましたか?
NuGet.tagetsファイルがある場合、Visual Studio/NuGet.exeはMSBuildパッケージの復元を試みます。
詳細については、 this doc を参照してください。
NuGetが不足しているパッケージを復元する前に、ソース管理に移動し、パッケージフォルダー内のすべてのファイル(repositories.configを除く)を削除する必要がありました。これは、パッケージをソース管理にチェックインするのではなく、パッケージの復元を使用しているという考え方です。ソース管理にパッケージが表示される場合、それらはダウンロードされません。
ローカルマシンでも同じ問題があります。パッケージマネージャーコンソールとnuget.exe restore MySolution.sln
すべてがインストールされたことを報告します。ソリューションディレクトリにpackages
フォルダーがなく、パッケージへの参照が解決されていません。
すべてのプロジェクトファイルをチェックしましたが、パッケージは..\packages
フォルダー、ソリューションファイル自体が配置されているフォルダー。
私がそれを機能させた方法は、実行することです:
nuget.exe restore MySolution.sln -PackagesDirectory packages
これにより、nuget.exeは指定されたフォルダーにすべてのパッケージをダウンロードし、すべての参照が復元されました。
NuGet 2.7以降では、ターゲットファイルはサポートされていないことに注意してください。msbuildはパッケージを復元するための統合された方法を使用すると想定していますが、非常に頻繁に失敗します。
実際、私自身の仕事では Paket を使用することを好みます。慣れると、alwaysが機能します。また、ターゲットファイルと、NuGetパッケージを作成する素敵な方法もサポートしています。
この背後にある科学についてはわかりませんが、ダウンロードしたばかりのVisual Studioプロジェクトをビルドして、いくつかのMSB3245
警告とそれに続く参照の欠落によるビルドの失敗:
編集: TimeSnapper 自動スクリーンショット履歴に戻ります(そのツールとの関係はありません-私は単なるファンです)、NuGetの管理の上部にもメッセージが表示されたようですパッケージと「復元」ボタン:「このソリューションにはNuGetパッケージがありません。クリックしてオンラインパッケージソースから復元します。」
「復元」は私にとっては自動的に行われたように見えますが、そのボタンを手動でクリックすると、パッケージが見つからないという問題を解決するためのトリックが実行される場合があります。
Nugetパッケージをアンインストールして、正しくインストールするために更新インストールを行う必要がありました。これは、同じ問題に直面しているあなたの一部を助けるかもしれません