1

3 つのプロジェクトを含む Visual Studio 2012 ソリューションがあります。構造の単純な依存関係グラフは次のとおりです。

  • コンソールUI
    • サブプロジェクト
      • Newtonsoft.Json.dll
      • RestSharp.dll
      • ...
    • ...

私が抱えている問題は、ConsoleUI をコンパイルするときに、RestSharp が出力にコピーされませんが、Newtonsoft.Json がアプリケーションでランタイム エラーを引き起こしていることです。

SubProject のプロジェクト プロパティで Copy Local が true に設定されていることを確認しました。

完全なクリーンとビルドを実行しましたが、役に立ちませんでした。

ConsoleUI に必要なアセンブリを手動で含めずに解決策を考えられる人はいますか?

4

2 に答える 2

2

これは、MSBuild に長く存在する動作のように思えます。ConsoleUI をビルドするときに実際にローカルにコピーされるアセンブリは、以下に基づいて計算されます。

  • プロジェクトの主な参照 (この場合はサブプロジェクト)
  • プライマリ参照からそれらの参照へのコンパイラで検出された参照 (この場合、SubProject -> Newtonsoft.Json が検出されていますが、* -> RestSharp は検出されていません)。

これを回避するには、次の 2 つの方法があります。

  1. コンパイラが無視できない SubProject から RestSharp への明示的な呼び出しを追加します (他の DLL は制御できないため)。これは使い捨てコードであるため、おそらく理想的ではありません。
  2. RestSharp を ConsoleUI のプライマリ リファレンスにします。
于 2012-09-26T00:15:15.173 に答える
0

プロジェクトをクリーンアップし、RestSharp へのすべての参照を削除し、Visual Studio を閉じ、Mbin と obj フォルダーを手動で削除します。次に、プロジェクトを再起動し、Nuget Package Reference を追加します。問題は確実に解決します。

于 2012-09-25T20:23:16.030 に答える