web-dev-qa-db-ja.com

App_Codeフォルダーの問題

そのため、デザインしている新しいWebサイトのApp_Codeフォルダーに非常に奇妙な問題が発生しています。

App_Codeフォルダーの名前空間内に基本クラスがあります。名前空間を設定してクラスからオブジェクトを作成すると、IDEですべて正常に動作します。ホバーするとクラスの概要が表示され、[定義に移動]をクリックすると次の場所に移動します。クラスファイル。また、ローカルでも正常に機能します。

ただし、サイトをサーバーにロードすると、そのページにアクセスしたときに次のエラーメッセージが表示されます。

10行目:System.Web.UI.WebControlsを使用します。
11行目:System.Web.UI.WebControls.WebPartsを使用します。
12行目:xxxx.xxxxを使用

コンパイラエラーメッセージ: CS0246:タイプまたは名前空間名 'xxxxxx'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

クラスファイルがそこにあるという事実を知っています。誰かが何が起こっているのかについて何か考えがありますか?

編集:

ジョン、はい、それは2.0サイトです。

28
Ethan Gunderson

クラスがコンパイルされないという問題。App_Codeフォルダー内のクラスのプロパティに移動し、その「ビルドアクション」プロパティを「コンテンツ」から「コンパイル」に変更するだけで、この問題を解決できます。

66
lKashef

アプリケーションがWebサイトプロジェクトではなくWebアプリケーションプロジェクトである場合、コードファイルはApp_Codeフォルダーに配置しないでください(ばかげたデザインです)。コードなどと呼ばれる新しいフォルダを作成し、そこに配置します。

たくさんの古い.NetWebサイトをアプリケーションプロジェクトにアップグレードしたとき、それは私にあらゆる種類の問題を引き起こしました。

22
X-Cubed

これは私に起こったばかりで、解決策は、App_Code(およびApp_Data)がサーバーのルートではなく、他のすべてを保持するサブフォルダーに配置されることでした。ルートにある必要があります!

2
pirsqua

サイトの公開方法によっては、App_Codeでは検索されず、代わりにクラスを含むBinフォルダーでDLL)が検索されます。どのようにしてWebサイトをに転送しましたか。サーバ?

1
Danny Tuppeny

参照されるアセンブリまたはコードファイルでコンパイル時エラーが発生するたびに、IDEパーサーとコンパイラーの間に不一致が発生することがあります。そのような状況では、IDE =は型を正しく識別し、それらを完全にサポートしますが、コンパイラは参照オブジェクトを作成できなかったため、参照オブジェクトが存在しないと文句を言います。

今、私は誰かを非難したくありません—これは単なる推測です—しかし、おそらく参照されたコードファイルにエラーがないことを確認する必要があります。

1

次の人のために...私はこれと同じ一連の問題を抱えていましたが、App_Codeでクラスに「HTML」という名前を付けたことが原因でした。コンパイラが問題の内容を教えてくれなかったため、名前の競合であることがわかるまでに長い時間がかかりました。

0
krowe2