アプリケーション(主としてデスクトップアプリケーション)からSystem.Web アセンブリを利用するクラスライブラリを参照しても「(クラスライブラリの名前空間の)名前空間が見つかりません」エラーが表示され、参照できないことがあります。
クラスライブラリ内でSystem.Webアセンブリを参照しているかまで把握していないことが多いため、トラブル事例としては、特定のアセンブリだけ参照ができないという状況になります。
原因はアプリケーション側のプロファイルが".NET Framework 4 Client Profile"になっておりSystem.Webアセンブリが参照できないことが原因です。
対策1
呼び出し元側のプロファイルを".NET Framework 4 Client Profile"から".NET Framework 4"に変更することでエラーを回避できます。
アプリケーションのプロジェクトのプロパティを表示します。アプリケーションタブを選択し、対象のフレームワークを確認します。Windows Formアプリケーションでは、デフォルトでは".NET Framework 4 Client Profile"になっています。
対象のフレームワークのコンボボックスをクリックしてフレームワークの一覧を表示します。一覧の中から".NET Framework 4"を選択します。
ターゲットフレームワークを変更するにはプロジェクトを一度閉じてからもう一度開く必要がある旨のめせーじが表示されえます。問題なければ[はい]ボタンをクリックしてターゲットフレームワークを変更します。
再度プロジェクトのプロパティーを表示するとターゲットフレームワークが".NET Framework 4"に変わっていることを確認できます。
対策2
ライブラリ側でSystem.Webアセンブリのクラスの利用が少ない場合はSystem.Webアセンブリのクラスを使わないように修正することで回避できます。
例
System.Web.HttpUtillity.UrlUrlEncode ⇒ System.Uri.EscapeUriString へ置き換える
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2011-04-18