ASP.NETでWebサイトを作成し、クラスを作成してApp_Codeフォルダー内に配置しました。ただし、他のページからはアクセスできません。これを可能にするために何かを設定する必要がありますか?以前のプロジェクトでは機能させましたが、このプロジェクトでは機能しませんでした。
namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
ASP.NETでWebサイトを作成し、クラスを作成してApp_Codeフォルダー内に配置しました。ただし、他のページからはアクセスできません。これを可能にするために何かを設定する必要がありますか?以前のプロジェクトでは機能させましたが、このプロジェクトでは機能しませんでした。
namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
回答:
フォルダ内の.cs
ファイルを右クリックして、App_Code
そのプロパティを確認します。
「ビルドアクション」が「コンパイル」に設定されていることを確認します。
これを、クラスにアクセスする他のファイルの上部に配置します。
using CLIck10.App_Code;
または、次のように他のファイルからクラスにアクセスします。
CLIck10.App_Code.Glob
それがあなたの問題であるかどうかはわかりませんが、C#を初めて使用する場合は、これは簡単に起動できます。
更新:App_Codeフォルダーをプロジェクトに追加すると、この「特別な」フォルダーを正しく認識するために、Visual Studioを閉じて再度開く必要があることが最近わかりました。
App_codeクラスにアクセスする場所からページに移動し、app_codeクラスの名前空間を追加します。using
次のようにステートメントを提供する必要があります。
using WebApplication3.App_Code;
その後、app_codeクラスプロパティに移動して、[ビルドアクション]を[コンパイル]に設定する必要があります。
ページと同じ名前空間を使用していることを確認してください
なぜこれが発生するのかはまだわかりませんが、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で元に戻さなくても大丈夫でした!
私の場合、App_Codeフォルダーで定義されたクラスでプロジェクトをビルドできませんでした。
コメントするためにシナリオを正確に複製することはできませんが、インテリセンスが協力して同意するためにビジュアルスタジオを閉じて再度開く必要がありました...
App_Codeフォルダー内のクラスが「コンテンツ」(右クリック)ではなく「コンパイル」に設定されている場合、エラーがクラスの2番目のバージョンから発生していることに気付きました...コードペインとタブの間の3つのフィールドのうちの3つ。「その他」のものは、10_App_Codeやそれに類するものに沿って何かと呼ばれていました。
この問題を修正するために、フォルダーの名前をApp_CodeからCodeに変更し、クラスに名前空間を明示的に設定し、すべてのクラスを「コンパイル」に設定しました