2つのシナリオでこの問題に遭遇しました。
まず、msbuild.exeを使用してコマンドラインからソリューションをビルドしようとしたとき。次に、TFSとCIを使用してビルドサーバーでslnとそれを含むプロジェクトをビルドしようとしたとき。
参照が欠落していると主張してエラーが発生します。ローカルビルドディレクトリとTFSサーバーの両方を調べると、/ packagesフォルダーが作成されておらず、nugetパッケージがコピーされていないことがわかります。Alexandreの回答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によって実行されているコマンドを示すのに役立ちます。これが、一時的にターゲットファイルをハッキングするきっかけになりました。