web-dev-qa-db-ja.com

サブプロジェクトを参照するすべてのプロジェクトは、NuGetパッケージMicrosoft.Bcl.Build(C#/ Windows Phone 7)をインストールする必要がありますか?

Visual Studio 2012で複数のプロジェクトを使用するC#ソリューションを含む、特に難しいリファクタリングセッションを行っています。コードを複数のプロジェクトに共有して、すべて同じソリューションでコードを共有できるようにするために、一連のコードを独自のアセンブリに引き出す必要がありました。ただし、何を試みても、新しい共有プロジェクトを参照するプロジェクトに対して、「{共有プロジェクト名}を参照するすべてのプロジェクトは、nugetパッケージMicrosoft.Bcl.Buildをインストールする必要がある」という警告が表示されます。

私は依存プロジェクトと共有プロジェクトを細かく櫛で調べて、それらがすべて同じバージョンを使用しており、まったく同じであることを詳細に確認していますDLL for Microsoft.Bcl version 1.0.1.19およびMicrosoft.Bcl.Asyncバージョン1.0.16パッケージ:

  • System.Runtime
  • System.Threading.Tasks

  • Microsoft.Threading.Task

  • Microsoft.Threading.Tasks.Extensions
  • Microsoft.Threading.Tasks.Extensions.Phone

DLLパスはすべて解決され、同一です。XAPファイルはビルドされますが、依存するプロジェクトでMicrosoft.Bcl.Buildが参照されていないという警告が表示されますが、それであることがわかります。

代わりに、関連するプロジェクトごとにNuGetを使用してこれらの2つのパッケージをアンインストールしてから再インストールしようとすると、空のパスと5 DLL参照が含まれる参照の警告アイコンが表示されます。参照がDLLを見つけることができません。また、これを行うと、参照を追加しようとすると「参照を追加できません」エラーが発生するプロジェクトが頻繁に発生するという問題が発生します。次に、ソリューションを再度開くと、「プロジェクトの読み込みに失敗しました」というエラーが発生するため、プロジェクトファイルを手動で編集し、障害のあるパッケージインポートステートメントを削除して、プロジェクトを再読み込みする必要があります。

この問題を解決するにはどうすればよいですか?また、将来この頭痛を回避するための一般的なテクニックは何ですか?不足しているパッケージをNuGetに管理させることは、何の助けにもなりませんでした。

20
Robert Oschler

他の誰かがこれに遭遇し、@ Swellの解決策によって「wtf」になった場合:

私は最近、古いMVCプロジェクトを実行して更新しました(かみそり、asp、httpなどのnugetパッケージを更新しました)。プロジェクトは、それ自体とは関係なく、正常にビルドされましたが、公開しようとすると、OPのエラーで失敗しました。

それは、それに関連付けられている*.Testsプロジェクトを更新しなかったことが原因であることがわかりました(テストがthatプロジェクトに密接に関連している理由は不明ですが、理解できたはずです)。したがって、修正するには:

  1. Solutionを右クリックして、nugetパッケージを管理します。
  2. Webプロジェクトで更新されたすべてのパッケージを確認し、それらを他のプロジェクトにも適用します(各「更新」には、該当するプロジェクトを含むツリーが表示されます。OKAYクリックで問題ありませんでした)。
  3. 再構築。

これであなたは元気になり、吠えるべきではありません。他の人の役に立つことを願っています。

16
Brad Christie

同じ問題が発生し、バグがここに開かれます: http://nuget.codeplex.com/workitem/3268

私がやったことは以下です、私はソリューションレベルにパッケージMicrosoft.Bcl.Buildを追加しました

私の開発環境では、パッケージがロードされていない場合は、ソリューションを右クリックしてnugetパッケージの管理を選択するだけで、復元ボタンのある黄色のバーが表示され、クリックするだけで問題ありません。

プロジェクトをコンパイルする前のビルドスクリプトで、次のコマンドを実行します。

.\myproject\.nuget\NuGet.exe install .\myproject\.nuget\packages.config -OutputDirectory .\myproject\packages

これにより、ソリューションレベルのパッケージが復元され、問題ありません。

これは、問題レポートによると、この夏の終わりまでにバージョン2.7で修正される予定です。

6
Swell