Ich habe eine Website in ASP.NET erstellt, eine Klasse erstellt und in den Ordner App_Code eingefügt. Ich kann jedoch von meinen anderen Seiten nicht darauf zugreifen. Muss etwas konfiguriert werden, um dies zu ermöglichen? Ich habe es in früheren Projekten zum Laufen gebracht, aber irgendwie nicht in diesem.
namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
Antworten:
Klicken Sie mit der rechten Maustaste auf die
.cs
Datei imApp_Code
Ordner und überprüfen Sie deren Eigenschaften.Stellen Sie sicher, dass "Build Action" auf "Compile" eingestellt ist.
quelle
Fügen Sie dies oben in die anderen Dateien ein, in denen Sie auf die Klasse zugreifen möchten:
ODER greifen Sie von anderen Dateien wie folgt auf die Klasse zu:
Ich bin mir nicht sicher, ob das Ihr Problem ist oder nicht, aber wenn Sie neu in C # waren, ist dies ein leichtes Problem.
Update: Ich habe kürzlich festgestellt, dass ich, wenn ich einem Projekt einen App_Code-Ordner hinzufüge, Visual Studio schließen / erneut öffnen muss, damit es diesen "speziellen" Ordner richtig erkennt.
quelle
Wechseln Sie zu der Seite, von der aus Sie auf die App_code-Klasse zugreifen möchten, und fügen Sie den Namespace der app_code-Klasse hinzu. Sie müssen eine
using
Erklärung wie folgt abgeben:Danach müssen Sie zur Eigenschaft app_code class gehen und die 'Build Action' auf 'Compile' setzen.
quelle
Stellen Sie sicher, dass Sie denselben Namespace wie Ihre Seiten verwenden
quelle
Ich habe noch nicht herausgefunden, warum dies auftritt, aber ich hatte Klassen in meinem
App_Code
Ordner, die Methoden ineinander aufriefen, und dies war in Ordnung, als ich ein .NET 4.5.2-Projekt erstellte, aber dann musste ich Setzen Sie es auf 4.0 zurück, da der Zielserver nicht aktualisiert wurde.langversion
Dann habe ich dieses Problem gefunden (nachdem ich die in meiner web.config von 6 auf 5 behoben habe ... eine andere Geschichte) ....Eine meiner Methoden hatte immer wieder einen Fehler wie:
Alle meine Klassen waren in ihren Eigenschaften bereits auf "Kompilieren" eingestellt, wie in der hier akzeptierten Antwort vorgeschlagen, und jede hatte einen gemeinsamen Namespace, der gleich war, und jede hatte
using MyNamespace;
oben in jeder Klasse.Ich stellte fest, dass dieses Konfliktproblem nicht mehr auftrat, wenn ich nur die fehlerhaften Klassen, die Methoden ineinander aufrufen mussten, in einen anderen Standardordner mit dem Namen "App_Code" verschob.
Hinweis : Wenn Sie einen Standardordner mit dem Namen "AppCode" erstellen, Ihre Klassen in diesen Ordner verschieben, den Ordner "App_Code" löschen und "AppCode" in "App_Code" umbenennen, treten Ihre Probleme erneut auf. Es spielt keine Rolle, ob Sie die Option "Neuer Ordner" oder "ASP .NET-Ordner hinzufügen" verwenden, um "App_Code" zu erstellen - es scheint, als würde der Name eingegeben.
Vielleicht ist dies nur ein .NET 4.0 (und möglicherweise früheres) Problem ... In 4.5.2 ging es mir gut, bevor ich zurückkehren musste!
quelle
Ich fand es einfacher, die Dateien in ein separates Klassenbibliotheksprojekt zu verschieben und dann auf dieses Projekt im Webprojekt zu verweisen und den Namespace im
using
Abschnitt der Datei anzuwenden . Aus irgendeinem Grund funktionierten die anderen Lösungen nicht für mich, aber diese Umgehung funktionierte.quelle
In meinem Fall konnte ich kein Projekt zum Erstellen mit Klassen erstellen, die im Ordner App_Code definiert sind.
Ich kann das Szenario nicht präzise replizieren, um es zu kommentieren, musste aber das visuelle Studio schließen und erneut öffnen, damit Intellisense zusammenarbeiten kann ...
Ich habe festgestellt, dass die Fehler von einer zweiten Version der Klasse stammen, wenn eine Klasse im Ordner "App_Code" auf "Kompilieren" anstelle von "Inhalt" gesetzt ist (klicken Sie mit der rechten Maustaste darauf) 3 der 3 Felder zwischen dem Codebereich und der Registerkarte. Der 'andere' wurde so etwas wie 10_App_Code oder ähnliches genannt.
Um das Problem zu beheben, habe ich den Ordner von App_Code in Code umbenannt, Namespaces für die Klassen explizit festgelegt und alle Klassen auf 'Compile' gesetzt.
quelle