2011-07-03 19 views
4
私は、Visual Studioのソリューションに3つのプロジェクトを作成したい

を参照することはできません:は、他のプロジェクト

  • Windowsサービス(参照ビジネス・レイヤー、共通層、log4net.dll)
  • ビジネス・レイヤー(参照共通層、 log4net.dll)
  • 共通層(参照がlog4net.dll)

ステップ:

  1. 変更を加えることなく、ウィザードを使用してビジネスレイヤーと共通レイヤーを作成します。私は参照を設定し、すべてが機能しています。

  2. 次に、新しいWindowsサービスプロジェクトをソリューションに追加して作成します。私は、任意のCPUの代わりにターゲットプラットフォームx86で追加されていることに気付きました。私は3つのものを参照し、コードは正しく色付けされています。コンパイル前のエラーは消えます。これは、参照が認識されることを意味します。

  3. ただし、ソリューションをビルドすると、Windowsサービスプロジェクトにコンパイルエラーが発生します。参照されているアセンブリが見つかりません。

ここで何が起こっているかx86構成が「タイプまたは名前空間の名前 'log4net'が見つかりませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?)」エラー?

私は、WindowsサービスプロジェクトにすべてのCPU構成を使用させました。私はすべての参照をダブルチェック、彼らは正しいです。それでも私は何も参照することはできません。

システムスペック:

  • のWindows 7のx64 SP1のVisual Studio 2010の
  • 究極

答えて

6

まあ、あなたはすでに答えを見つけました。 Log4netは、クライアントプロファイルで使用できないアセンブリであるSystem.Web.dllに依存しています。この依存関係の主な理由は、log4net.Appender.AspNetTraceAppenderクラスです.HttpContextクラスを使用し、System.Webが必要です。

これは、ライブラリのドキュメントか、難しい方法で見つけ出す必要があることです。ビルディングは警告を出しますが、警告だけでエラーではなく、簡単に逃すことができます。

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common。ターゲット(1360,9):警告MSB3253:参照されているアセンブリ "C:\ projects \ WindowsFormsApplication2 \ ClassLibrary1 \ bin \ Debug \ ClassLibrary1.dll"は、 "System.Web、Version = 4.0"に依存しているため解決できませんでした。 0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a "は現在対象とするフレームワーク" .NETFramework、Version = v4.0、Profile = Client "には含まれていません。ターゲットとするフレームワークにないアセンブリへの参照を削除するか、プロジェクトのターゲットを変更することを検討してください。

log4net参照を含むアセンブリ内のクラスを参照しようとするコード内のステートメントのエラーが続きます。

C:\プロジェクト\ WindowsFormsApplication2 \ WindowsFormsApplication2 \ Form1.csの(12,9):エラーCS0246:型または名前空間名 'ClassLibrary1の' が見つかりませんでした(あなたがusingディレクティブまたはアセンブリ参照が不足しています?)

あなたはどちらか欠けていないと、コードを記述しながら、あなたはインクリメンタルビルドしていない場合は、エラーのたくさんがあることができます。あなたはエラーに焦点を当て、エラーがエラーの真の原因であることを認識しません。もう一つの厄介なトラップは、IntelliSenseが最初は満足しているということです。がアセンブリ参照を適切に解決しますか?警告が常に生成されるわけではなく、多くのプログラマーがそれを見逃しているという事実によって、警告が生成されるという証拠はいくつかあります。私はまだそれが事実であるシナリオをまだ見つけていない。わからない。

+0

これは厳しいものでした...警告はこの場合の真の指標でした。 「.NET Framework 4 Client Profile」から「.NET Framework 4」に変更することで、この問題が解決されました。 –

3

私の髪のいくつかの一握りを失う後、私は問題を解決しthis Stackoverflow答えを見つけました。 しかし、Visual Studioは、ターゲットプラットフォームとしてx86のWindowsサービスを追加し、.Net Framework 4クライアントプロファイルをターゲットフレームワークとして追加するのはなぜですか?

0

ソリューションが構築されているかどうかを確認します。これは、ソリューション>プロパティ>構成プロパティを右クリックすることで実行できます。すべてのソリューションが構築されていることを確認してください

関連する問題