ASP.NET MVC mit App_Code-Verzeichnis
Habe ich ein Verzeichnis App_Code in meine ASP.NET MVC-Projekt, so daß ich die dynamische Kompilierung von plugins.
Nur leichte ärgernis ist, dass bei der Entwicklung von neuen plugins, die ich nicht bekommen, intellisense auf Klassen innerhalb der App_Code-Verzeichnis.
Zurzeit bin ich schaffen Sie in ein anderes Verzeichnis in meinem Projekt und dann kopieren Sie Sie in App_Code.
gibt es eine Möglichkeit, um dieses?
[Update]
Habe ich geschrieben eine "Antwort" weiter unten. Technisch wird die Frage beantwortet, basierend auf meinen eigenen Spezifikation, die Verwendung von tools (z.B. intellisense) sollte nicht erforderlich sein, um plugins erstellen. Das wurde aber prompt eine Frage, wie kann ich erreichen, eine dynamisch kompilierte plugin-framework ohne Verwendung von App_Code. Da diese Frage ist so anders als das original, ich will es separat.
VS 2008 / 2010 RTM
InformationsquelleAutor Ben Foster | 2010-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, ändern Sie die Dateien "Build Action" in den Eigenschaften von "Kompilieren" auf "Content". Dann wären Sie zusammengestellt, wie eine WebSite.
Der Artikel erklärt es:
http://vishaljoshi.blogspot.co.uk/2009/07/appcode-folder-doesnt-work-with-web.html
InformationsquelleAutor Jenninha
ASP.NET MVC verwendet eine web-Anwendung-Projekt im Gegensatz zu einer web-site. Eine web-Anwendung-Projekt kompiliert werden muss. Die
App_Code
Verzeichnis keinen Sinn macht, in eine solche Anwendung geben.Ich fügte hinzu, ein downvote, weil ich habe das App_Code-Verzeichnis in einer MVC-web-Anwendung. Der Grund, die ich brauchte, es war zu überschreiben, die VirtualPathProvider, wenn das implementieren in IIS6. Ich konnte Sie nicht finden wieder den ursprünglichen Unterlagen, aber dieser Beitrag enthält einige Infos:sunali.com/2008/01/09/...
InformationsquelleAutor Darin Dimitrov
Scheint es unwahrscheinlich, dass ich Referenz-code in mein MVC-web-app-assembly von App_Code zur design-Zeit. Ich glaube, das liegt einfach in der Natur von Web-Applikations-Projekten in Visual Studio, und die Tatsache, dass code im App_Code-Verzeichnis kompiliert wird in einer anderen assembly.
In meiner ursprünglichen Frage habe ich erklärt, dass ich verwenden wollte App_Code, weil es die dynamische Kompilierung Fähigkeiten. Gedanken über meine Anforderungen Erweiterbarkeit, die Tatsache, dass intellisense funktioniert nicht-Eigenschaft sollte nicht ein Anliegen, wie der ganze Punkt ist, dass eine IDE nicht erforderlich, um die Entwicklung von plugins - wenn ich im Begriff war, zu öffnen von Visual Studio zu entwickeln kann ich da auch nur die Verwendung von Klassenbibliotheken.
So denken über meine plugin-Architektur, ich bin fein mit dem Begriff der Definition meiner plugins (http://weblogs.asp.net/justin_rogers/articles/61042.aspx) und ich kann das automatische laden von plugins aus einem bestimmten Verzeichnis, etwa so:
Der einzige Grund für die Verwendung von /bin war die Leistung. Jedoch, da das plugin-Projekt verwiesen wird, die Haupt-web-Projekt landete ich mit post-build-Ereignisse zu halten alles in Schach, die ich nicht mochte.
Also eine bessere Lösung (wie vorgeschlagen, durch eine Reihe von Menschen) ist eine Konfigurationsdatei verwenden, um zu definieren, plugins und drop die dlls ins bin als normal.
Aber mit all diesen verschiedenen Ansätzen bin ich Sockelleisten Runden die erste Voraussetzung -, um in der Lage zu zwicken plugins on-the-fly mit keine IDE und ohne die Notwendigkeit, manuell kompilieren Sie die Anwendung.
So, in diesem Fall ist die Verwendung App_Code wirklich so schlimm und wird es wieder kommen, um mich beißen?...
InformationsquelleAutor Ben Foster
Gibt es eine Antwort. Für MVC3-mindestens. Öffnen Sie nicht die Lösung, da eine Lösung. Öffnen Sie eine Webseite, die von den lokalen IIS (unter der Annahme, dass ist, wie Sie es ausführen). Dann sehen Sie Ihre dynamische app_code-code angezeigt mit intellisense. Aber Sie werden nicht in der Lage zu durchsuchen, um eine andere code-Bibliotheken, die draußen sind. Benötigen Sie eine andere Instanz von studio und öffnen als eine Lösung, das zu tun.
InformationsquelleAutor Brian White