@IT会議室は、2009年4月15日に新システムに移行し、さらに2012年5月29日にITエンジニアに特化した
質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用くださいませ。
- PR -

Web ユーザーコントロール内のnamespace をApp_Code内で参照できない

1
投稿者投稿内容
まめみ
会議室デビュー日: 2006/07/23
投稿数: 14
投稿日時: 2007-10-18 15:12
VS2005 になってWebサイト内のクラスはApp_Codeフォルダーに入れる様になりました。
App_Code内のクラスで定義したnamespaceは、Webサイト内の別フォルダーにある
.aspx.cs, .ascx.cs で参照できますが、
.aspx.cs, .ascx.cs で定義したnamespaceが別フォルダーのクラスファイルから参照できません。
少しややこしい説明になりましたが、例えばユーザーコントロールのクラスをApp_Code内のプログラムから参照したいのですが、using xxxxx; で名前空間が存在しません〜
エラーになります。
どうすれば、別フォルダーのクラスファイルからこの名前空間を参照できる様になるのでしょうか?
どなたかご指導願います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-18 19:20
エディタのなにもないところで [CTRL]+[J] をキーインすると、ルート名前空間に定義されたものが表示されると思います。キーの組み合わせは要確認
ここから順番に目的のコントロールがある名前空間までたどってみてください

予想外の名前空間が紛れ込んでいると思います。ディレクトリ名とか、プロジェクト名とか
まめみ
会議室デビュー日: 2006/07/23
投稿数: 14
投稿日時: 2007-10-18 21:27
Jitta 様
返信ありがとうございます。
順番にたどって行って、目的のコントロールがある名前空間が出てきません。

VS2003 で出来上がっていたプロジェクトをVS2005に置き換えています。
VS2003 ではクラスファイルもWebフォームやWebユーザーコントロールも同じフォルダーに入れていました。
VS2005 にコンバートした時、クラスファイルはApp_Codeに入れられて分離されてしまいました。
WebフォームやWebユーザーコントロールで作成した名前空間が別のフォルダーにある名前空間が参照できなくなっています。
App_Code内のクラスファイルからWebユーザーコントロールで作成した名前空間を参照出来なくなりこまっています。
WebユーザーコントロールのクラスをApp_Codeに入れることも出来ず、web.configかどこかで名前空間の定義が出来ないかと思ったのですが・・・何とかならないものでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-10-19 09:46
Webサイトじゃなくて、Webアプリケーションじゃないとだめかな。
http://www.vbaspcoder.com/PermaLink,guid,ad539948-a785-4b84-899b-eaae748e1f94.aspx
まめみ
会議室デビュー日: 2006/07/23
投稿数: 14
投稿日時: 2007-10-21 09:35
一郎様 ありがとうございます。
引用:

一郎さんの書き込み (2007-10-19 09:46) より:
http://www.vbaspcoder.com/PermaLink,guid,ad539948-a785-4b84-899b-eaae748e1f94.aspx


問題はご紹介いただいたページにある〜
「ASP .NET 2.0コンパイラのアーキテクチャが前バージョンとは全く変わってApp_CodeからUserControlのクラスが参照できなくなっているからです。」
の現象です。
MicrosoftR Visual StudioR 2005 Team Suite Service Pack 1
をインストールしましたが、まだうまくいっていません。
(XPではインストールできましたが、VISTAでは失敗しました)
インストールしただけではダメなのでしょうか?

VS2005になって、通常のクラスファイルからUserControlのクラスが参照する。
と言う作り方が良くない・・・と言う事でしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-10-22 09:28
プロジェクトの種類が違うんだと思います。
「ファイル」−「新規作成」−「Webサイト」に「ASP.NET Webサイト」というテンプレートがあると思います。
まめみさんが今扱っているのはこれです。
サービスパックを入れると「ファイル」−「新規作成」−「プロジェクト」の中に「ASP.NET Webアプリケーション」というテンプレートができると思います。
これを使ってみてください。
まめみ
会議室デビュー日: 2006/07/23
投稿数: 14
投稿日時: 2007-10-22 17:07
一郎さん、ありがとうございます。

サービスパックを入れると、そのまま今までのエラーが消えるんじゃないんですね。
単純に考えていました・・・。

ご指摘の通り、サービスパックの入ってるのと入っていないのを比べてみると、
「ファイル」−「新規作成」−「プロジェクト」の中に「ASP.NET Webアプリケーション」というテンプレートができていました。
これで作り直さないといけないんですね。
ありがとうございます。

1

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)