そのため、デザインしている新しい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サイトです。
クラスがコンパイルされないという問題。App_Codeフォルダー内のクラスのプロパティに移動し、その「ビルドアクション」プロパティを「コンテンツ」から「コンパイル」に変更するだけで、この問題を解決できます。
アプリケーションがWebサイトプロジェクトではなくWebアプリケーションプロジェクトである場合、コードファイルはApp_Codeフォルダーに配置しないでください(ばかげたデザインです)。コードなどと呼ばれる新しいフォルダを作成し、そこに配置します。
たくさんの古い.NetWebサイトをアプリケーションプロジェクトにアップグレードしたとき、それは私にあらゆる種類の問題を引き起こしました。
これは私に起こったばかりで、解決策は、App_Code(およびApp_Data)がサーバーのルートではなく、他のすべてを保持するサブフォルダーに配置されることでした。ルートにある必要があります!
サイトの公開方法によっては、App_Codeでは検索されず、代わりにクラスを含むBinフォルダーでDLL)が検索されます。どのようにしてWebサイトをに転送しましたか。サーバ?
参照されるアセンブリまたはコードファイルでコンパイル時エラーが発生するたびに、IDEパーサーとコンパイラーの間に不一致が発生することがあります。そのような状況では、IDE =は型を正しく識別し、それらを完全にサポートしますが、コンパイラは参照オブジェクトを作成できなかったため、参照オブジェクトが存在しないと文句を言います。
今、私は誰かを非難したくありません—これは単なる推測です—しかし、おそらく参照されたコードファイルにエラーがないことを確認する必要があります。
次の人のために...私はこれと同じ一連の問題を抱えていましたが、App_Codeでクラスに「HTML」という名前を付けたことが原因でした。コンパイラが問題の内容を教えてくれなかったため、名前の競合であることがわかるまでに長い時間がかかりました。