20

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 に管理させても、まったく役に立ちませんでした。

4

2 に答える 2

16

他の誰かがこれに遭遇し、@ Swellのソリューションがあなたを「wtf」にした場合:

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

それは、関連するプロジェクトを更新しなかったことが原因であることが判明しました (なぜ Tests がプロジェクト密接に結びついているの*.Testsかはわかりませんが、理解する必要がありました)。したがって、修正するには:

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

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

于 2013-06-21T20:35:15.423 に答える
6

私はちょうど同じ問題に遭遇し、バグがここで開かれています: http://nuget.codeplex.com/workitem/3268

私が行ったことは次のとおりです。ソリューションレベルにパッケージ Microsoft.Bcl.Build を追加しました

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

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

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

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

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

于 2013-05-30T13:42:00.967 に答える