App_Codeフォルダーのサブフォルダーのクラスが正しく検出されないのはなぜですか?
-
03-07-2019 - |
質問
クラスファイルをApp_Codeフォルダーのサブフォルダーに配置すると、次のエラーが表示されます。
errorCS0246:型または名前空間名 'MyClassName'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
このクラスは名前空間にまったくありません。アイデアはありますか?
解決
web.configのコンパイル要素にcodeSubDirectoriesを追加する必要があります
<configuration>
<system.web>
<compilation>
<codeSubDirectories>
<add directoryName="View"/>
</codeSubDirectories>
</compilation>
</system.web>
</configuration>
他のヒント
ファイルのBuildActionプロパティを確認します。これは「コンパイル」に設定する必要があります
IIS(またはWebサーバー)でアプリケーションとしてフォルダーを設定していない可能性はありますか?そうでない場合、使用されるApp_Codeは parent フォルダー(または次のアプリケーション以降)からのものです。
フォルダーがアプリケーションとしてマークされ、ASP.NETの正しいバージョンを使用していることを確認します。
正しい方法ではないかもしれませんが、私はそれが最も簡単だと思います。
通常どおりメインフォルダーにクラスを作成し、マウスでサブフォルダーに移動します。再コンパイルするとすべてが正常になります。
app_codeにフォルダーを追加すると、デフォルトの名前空間をルートとして使用し、フォルダーごとに追加することを正しく思い出せば、それらは異なる名前空間によって分離されます。
Visual Studio(少なくとも2010、ただし過去のバージョンも思い出します)では、ソリューションエクスプローラー内でフォルダーを右クリックし、[プロジェクトに含める]を選択できます。
各ファイルの[プロパティ]タブで(または一度にすべてを選択して)、[コンパイル]を選択します。 &quot;ビルドアクション&quot;プロパティ。
これは私のために働いた。