2011-01-03 18 views
3

Jedes Mal, wenn ich eine neue Klasse irgendwo unter meinem App_Code-Verzeichnis in meiner MVC 3-Webanwendung hinzufüge, wird es mit einer Build-Aktion von "Inhalt" festgelegt. Ich muss es standardmäßig auf "Kompilieren" einstellen. Gibt es irgendwo in Visual Studio eine Standard-Build-Aktion für Code unterhalb dieses Verzeichnisses?Standard-Build-Aktion in App_Code-Verzeichnis?

+1

Aus Neugier, welchen Code platzieren Sie dort? Ich bin gerade knietief in einer großen MVC-App und habe noch nie etwas dorthin gebracht, so neugierig, wenn ich etwas verpasse. –

+0

Ich habe mehrere benutzerdefinierte Aktionsfilterattribute, HTML-Helfer usw. Dies schien der logische Ort zu sein, um sie zu platzieren, da sie MVC-spezifische Klassen sind. – Scott

+2

Schluer Ich empfehle dringend, App_Code für diese Art von Domänenklassen zu verwenden. Es wäre sauberer, Ihrer Projektstruktur entweder eine Satellitenassembly oder einen zusätzlichen Ordner hinzuzufügen, damit diese einen bestimmten Namensraum haben. In der modernen ASP.NET-Entwicklung ist das App_Code-Verzeichnis selten die beste Option. –

Antwort

9

MVC-Projekte sind keine Website-Projekte, sondern Web-Anwendungsprojekte. Website-Projekte (sofern nicht vorkompiliert) werden mit Quellcode bereitgestellt und dynamisch von der ASP.NET-Laufzeit kompiliert. Webanwendungsprojekte werden als separate Phasen erstellt und bereitgestellt. App_Code ist ein spezieller ASP.NET-Ordner, der separat vom Rest der Anwendung kompiliert wird. Aus diesem Grund sind die Elemente in App_Code standardmäßig auf Inhalt festgelegt, sodass sie getrennt von der Anwendung (Quelle) kompiliert werden können.

In Webanwendungsprojekten unterliegen Sie keinem Standardformat für Ihr Projektlayout, sondern den gesamten kompilierten Code am Ende des Tages. Ich würde empfehlen, entweder den Ordner Models im Projekt zu verwenden oder einfach nur einen eigenen Ordner zu erstellen. Ich würde App_Code nicht verwenden.

+0

Danke für die Info. Das hilft. Ich werde mein Projekt dann umstrukturieren, um die Verwendung des App_Code-Verzeichnisses überhaupt zu vermeiden. – Scott

+2

Vergiss nicht, wenn du Sachen von App_Code nach anderswo verschiebst, ändert sich die Build-Aktion für dich nicht, du musst das selbst auf "Kompilieren" setzen. –

+0

Aber wo setzt du die Rasiererhelferfunktionen? Scott Gu sagte, dass MS im App_Code-Verzeichnis betrogen und Rasiererfunktionen ausgeführt habe, da sie während des Entwicklungszyklus keine Zeit hatten, um sie an einem geeigneten Ort im Ordner "Views" zu platzieren. Ich stoße auf dieses Problem, weil ich Rasiermesserhelfer benutze und meinen cshtml Code für bessere Leistung vorkompilieren möchte. Hat jemand einen Vorschlag, was mit Rasierhelfern zu tun ist? Ich nehme an, die Leute benutzen sie einfach nicht? –