Visual Studio 2012 で複数のプロジェクトを持つ C# ソリューションを含むリファクタリング セッションが特に困難です。同じソリューション内の複数のプロジェクトでコードを共有できるように、一連のコードを独自のアセンブリに引き出す必要がありました。ただし、何を試しても、新しい共有プロジェクトを参照するプロジェクトに対して、「{共有プロジェクト名} を参照するすべてのプロジェクトは nuget パッケージ Microsoft.Bcl.Build をインストールする必要があります」という警告が表示されます。
私は依存プロジェクトと共有プロジェクトを細かく調べ、Microsoft.Bcl バージョン 1.0.1.19 と Microsoft.Bcl.Async バージョン 1.0 で同じバージョンとまったく同じ DLL を使用していることを詳細に確認しました。 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 参照の警告アイコンが表示されます。何らかの理由で、NuGet は参照を追加しますが、DLL を見つけることができません。また、これを行うと、参照を追加しようとすると「参照を追加できません」というエラーが発生するプロジェクトがあるという問題が頻繁に発生します。次に、ソリューションを閉じて再度開くと、「プロジェクトの読み込みに失敗しました」というエラーが発生します。そのため、プロジェクト ファイルを手動で編集し、問題のあるパッケージのインポート ステートメントを削除して、プロジェクトをリロードする必要があります。
この問題を解決するにはどうすればよいですか? また、将来この頭痛を回避するための一般的な手法は何ですか? 不足しているパッケージを NuGet に管理させても、まったく役に立ちませんでした。