App_Codeにあるクラスにアクセスできません


197

ASP.NETでWebサイトを作成し、クラスを作成してApp_Codeフォルダー内に配置しました。ただし、他のページからはアクセスできません。これを可能にするために何かを設定する必要がありますか?以前のプロジェクトでは機能させましたが、このプロジェクトでは機能しませんでした。

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}

1
私はあなたがあなたのウェブページに名前空間を含めていると思いますか?
Alex Czarto、2009

回答:


638

フォルダ内の.csファイルを右クリックして、App_Codeそのプロパティを確認します。

「ビルドアクション」が「コンパイル」に設定されていることを確認します。


10
これをデフォルトのビルドアクションとして設定するにはどうすればよいですか?または、App_Codeフォルダー内のすべてのファイルに対してそれを行う必要がありますか?
マラキ

3
Visual Studio 2012でこれを実行できないのはなぜですか?
RSK

4
これはVS2012のバグのようです。私にも起こります。
James Nail

2
詳細については、how-to-code-net.blogspot.ro
Alexa Adrian

3
これで私のVisual Studioプロジェクトの142個のエラーが解決されました。このソリューションを共有してくれてありがとう:-]
Michael G. Workman

14

これを、クラスにアクセスする他のファイルの上部に配置します。

using CLIck10.App_Code;

または、次のように他のファイルからクラスにアクセスします。

CLIck10.App_Code.Glob

それがあなたの問題であるかどうかはわかりませんが、C#を初めて使用する場合は、これは簡単に起動できます。

更新:App_Codeフォルダーをプロジェクトに追加すると、この「特別な」フォルダーを正しく認識するために、Visual Studioを閉じて再度開く必要があることが最近わかりました。


1
見た目はビルドアクションと関係がありました。FailBoyの回答で問題が解決しました。とにかく返信してくれてありがとう:)
マラキ

App_Codeフォルダー内のクラスに名前空間を追加したときに機能した素晴らしいものです。
mashtheweb 2013年

なぜそのような名前空間を含める必要があるのですか?なぜintelliSenseはフォルダーの名前を指定せずにそのクラスにアクセスできないのですか?
Elham Kohestani 2017

10

App_codeクラスにアクセスする場所からページに移動し、app_codeクラスの名前空間を追加します。using次のようにステートメントを提供する必要があります。

using WebApplication3.App_Code;

その後、app_codeクラスプロパティに移動して、[ビルドアクション]を[コンパイル]に設定する必要があります。


4

ページと同じ名前空間を使用していることを確認してください


1
しかし、なぜそれがAPP_CODEにあるのですか?PUBLICクラスのあるものはすべて、ソリューション全体で自動的に公開されるべきだと思いました!?
Fandango68

4

なぜこれが発生するのかはまだわかりませんが、App_Codeフォルダー内にあり、互いにメソッドを呼び出すクラスがあり、.NET 4.5.2プロジェクトをビルドしたときにこれを実行しても問題はありませんでしたが、その後、ターゲットサーバーがアップグレードされなかったため、4.0に戻します。それは私がこの問題を見つけたときです(langversion私のweb.configで6から5 に修正した後...別の話)...

私の方法の1つが次のようなエラーを出し続けました:

The type X.Y conflicts with the imported type X.Y in MyProject.DLL

私のクラスはすべて、ここで受け入れられた回答で提案されているように、プロパティで「コンパイル」にすでに設定されており、それぞれに同じ名前空間があり、それぞれがusing MyNamespace;各クラスの上部にありました。

お互いにメソッドを呼び出さなければならなかった問題のあるクラスを「App_Code」以外の名前の別の標準フォルダに移動した場合、この競合の問題が発生しなくなったことがわかりました。

:「AppCode」という標準フォルダーを作成し、クラスをその中に移動し、「App_Code」フォルダーを削除してから、「AppCode」の名前を「App_Code」に変更すると、問題が再発します。「新規フォルダー」または「ASP .NETフォルダーの追加」オプションを使用して「App_Code」を作成するかどうかは関係ありません。名前を入力するようです。

たぶん、これは.NET 4.0(およびおそらくそれ以前)の問題なのかもしれません...私は、4.5.2で元に戻さなくても大丈夫でした!


0

ファイルを別のクラスライブラリプロジェクトに移動してから、そのプロジェクトをWebプロジェクトで参照しusing、ファイルのセクションで名前空間を適用する方が簡単だと思いました。何らかの理由で他の解決策がうまくいかなかったが、この回避策はうまくいった。


0

私の場合、App_Codeフォルダーで定義されたクラスでプロジェクトをビルドできませんでした。

コメントするためにシナリオを正確に複製することはできませんが、インテリセンスが協力して同意するためにビジュアルスタジオを閉じて再度開く必要がありました...

App_Codeフォルダー内のクラスが「コンテンツ」(右クリック)ではなく「コンパイル」に設定されている場合、エラーがクラスの2番目のバージョンから発生していることに気付きました...コードペインとタブの間の3つのフィールドのうちの3つ。「その他」のものは、10_App_Codeやそれに類するものに沿って何かと呼ばれていました。

この問題を修正するために、フォルダーの名前をApp_CodeからCodeに変更し、クラスに名前空間を明示的に設定し、すべてのクラスを「コンパイル」に設定しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.