2010年07月04日
川俣晶の縁側ソフトウェア技術雑記total 14431 count

Visual Studio 2010で、コンソールアプリケーション等からクラスライブラリを参照するとコンパイルエラーになる問題と対策

Written By: 川俣 晶連絡先

 Visual Studio 2010で、あるプロジェクトから別のプロジェクトを参照すると、常に起こるわけではありませんが、以下のような警告が出る場合があります。

  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3253: 参照アセンブリ "c:\x\delme\ConsoleApplication24\ClassLibrary1\bin\Debug\ClassLibrary1.dll" は、現在のターゲット フレームワーク ".NETFramework,Version=v4.0,Profile=Client" 内にない "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" に依存するため、解決できませんでした。ターゲット フレームワーク内にないアセンブリへの参照を削除するか、プロジェクトを再ターゲットしてください。

原因 §

 対象のフレームワークが一致してないためです。

 プロジェクト作成時のデフォルトは、コンソールアプリケーション等は".NET Framework 4.0.NET Framework 4.0 Client Profile"。

 クラスライブラリ等は、".NET Framework 4.0"です。

 つまり、単にプロジェクトを作って参照するとそれだけで潜在的な問題を孕みます。

対策 §

 プロジェクトのプロパティを開いて、参照している側と、されている側のフレームワークを統一します。

再現方法 §

  1. Visual Studio 2010を開く
  2. コンソールアプリの新しいソリューションを作る
  3. クラスライブラリのプロジェクトをそのソリューションに追加する
  4. コンソールアプリにクラスライブラリの参照を追加する
  5. クラスライブラリに".NET Framework 4.0.NET Framework 4.0 Client Profile"に含まれないアセンブリへの参照を追加する (System.Web等)
  6. クラスライブラリのコードに、このアセンブリに含まれるクラス等を利用するコードを書き込む (new System.Web.HtmlString("abc");等)
  7. コンパイルすると上記の警告が出ます

問題のややこしい点 §

 実は参照するだけでは警告は出ず、問題のあるクラスを利用した時点で警告が出ます。そのため、発見が遅れがちだろうと思います。

感想 §

 なぜか古いプロジェクトのTFSへの登録が上手く行かず、しょうがないのでプロジェクトを全て作り直したところ、問題に気づきました。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2010年
07月
11日
Azureで標準的ではない拡張子のファイルをプロジェクトに登録しても404になる
3days 0 count
total 4027 count
【技術雑記】の前のコンテンツ
2010年
07月
04日
Visual Studio 2010のシステムへの登録ユーザー名を書き換える
3days 0 count
total 7675 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20100704143010
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.