2008-09-18 26 views
28

So habe ich ein wirklich seltsames Problem mit meinem App_Code-Ordner auf einer neuen Website, die ich entwerfe.App_Code Ordner Probleme

Ich habe eine Basisklasse innerhalb eines Namespace im Ordner App_Code. Alles funktioniert gut in der IDE, wenn ich den Namespace einrichte und ein Objekt aus der Klasse mache. Es wird die Klassenzusammenfassung beim Hover angezeigt, und wenn Sie auf "Gehe zu Definition" klicken, wird die Klassendatei angezeigt. Und es funktioniert auch gut localy.

Allerdings, wenn ich die Seite auf meinem Server zu laden, erhalte ich diese Fehlermeldung, wenn ich die Seite zuzugreifen:

Zeile 10: Verwendung von System.Web.UI.WebControls;
Zeile 11: Verwenden von System.Web.UI.WebControls.WebParts;
Zeile 12: using xxxx.xxxx

Compiler-Fehlermeldung: CS0246: Der Typ oder Namespace-Name 'xxxxxx' konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

Ich weiß für eine Tatsache, dass die Klassendatei da ist. Hat jemand eine Vorstellung davon, was los ist?

Edits:

John, ja, es ist eine 2.0-Site.

+0

Wie haben Sie die Site auf dem Server veröffentlicht? – Kev

Antwort

18

Wenn Ihre Anwendung ein Webanwendungsprojekt und nicht ein Websiteprojekt ist, sollten sich die Codedateien nicht im App_Code-Ordner befinden (dummes Design, das weiß ich). Erstelle einen neuen Ordner namens Code oder etwas und lege sie dort ein.

Es verursachte mir alle möglichen Probleme, als ich eine Reihe alter .Net-Websites zu Anwendungsprojekten aufwertete.

+0

Es ist erwähnenswert, dass, wenn Sie die Code-Dateien einfach aus dem App_Code-Ordner und in Ihren neuen Ordner ziehen, ihre Build-Aktion-Eigenschaft möglicherweise weiterhin auf Inhalt festgelegt wird und der Rest der Anwendung die Namespaces nicht sehen kann Eine der Antworten erwähnt, dass die Einstellung "compilieren" das sortiert. Ich denke, jede Klassendatei, die standardmäßig im App_Code-Ordner erstellt wird, wird auch in einem WAP-Projekt zum Erstellen von action = content gesetzt. – JsonStatham

+0

Was für eine Zeitverschwendung! Nichts als Kopfschmerzen für 6 Monate! Danke fürs Schreiben! +1 http://stackoverflow.com/questions/26135251/catch-exceptions-in-asp-net-resulting-from-generic-handler-ashx-file/26136417#26136417 – MacGyver

+0

Ja, ich hatte eine Web-App und C# -Projekt Arten. http://www.mztools.com/Articles/2008/MZ2008017.aspx – MacGyver

1

Ich habe manchmal eine Diskrepanz zwischen dem IDE-Parser und dem Compiler festgestellt, wenn in einer referenzierten Assembly oder Codedatei ein Fehler bei der Kompilierung auftritt. Unter diesen Umständen wird die IDE die Typen korrekt identifizieren und vollständige Unterstützung für sie bereitstellen, aber da der Compiler die referenzierten Objekte nicht erstellen konnte, wird es sich beschweren, dass die referenzierten Objekte nicht existieren.

Jetzt möchte ich niemanden beschuldigen - das ist nur eine Vermutung - aber Sie sollten wahrscheinlich sicherstellen, dass es keine Fehler in Ihrer referenzierten Codedatei gibt.

1

Je nachdem, wie Sie die Site veröffentlichen, wird in App_Code nicht nach einer DLL im Ordner Bin gesucht, der stattdessen die Klasse enthält. Wie haben Sie Ihre Website auf den Server übertragen?

2

Das passierte mir einfach und die Lösung war, dass App_Code (und App_Data) nicht im Stammverzeichnis des Servers abgelegt wurden, sondern in einem Unterordner, der alles andere enthielt. Muss im root sein!

63

Das Problem, dass Ihre Klassen nicht kompiliert werden, werden Sie dieses Problem lösen indem einfach im Ordner App_Code auf die Eigenschaften jeder Klasse gehen und es ist Eigentum ‚Build Aktion‘ ändern von „Content“ auf „Übersetzen“

+0

Gibt es eine Möglichkeit, die Build-Aktion jeder Klasse auf einmal zu ändern? – binard

+2

Was sind die Verzweigungen dafür, gibt es einen Grund dafür, dass dies die Standardeinstellung ist? – Coops

+1

Kann nicht auf die Eigenschaft klicken, die deaktiviert ist – Lijo

0

Für diejenigen, die folgen ... Ich hatte diese gleichen Probleme, aber es wurde verursacht, weil ich eine Klasse in App_Code, "HTML" genannt. Es dauerte eine ganze Weile, bis ich herausfand, dass es sich nur um einen Namenskonflikt handelte, weil der Compiler nicht sehr hilfreich war, mir das Problem zu erklären.

Verwandte Themen