Frage

Ich habe ein Verzeichnis App_Code meinem ASP.NET MVC-Projekt so hinzugefügt, dass ich die dynamische Kompilierung bekommen für Plugins.

Nur leichtes Ärgernis ist, dass, wenn neue Plugins zu entwickeln, ich nicht bekommen intellisense auf Klassen innerhalb des App_Code-Verzeichnisses.

Zur Zeit sich in einem anderen Verzeichnis in meinem Projekt ich schaff' und dann in App_Code kopieren.

Gibt es eine Möglichkeit, um dieses?

[Update]

Ich habe eine „Antwort“ unten geschrieben. Technisch beantwortet sich die Frage, auf Grund meiner eigenen Spezifikation, die Verwendung von Werkzeugen (d intellisense) sollten nicht schaffen Plugins erforderlich. Dies führte jedoch nicht prompt eine Frage, wie ich ein dynamisch kompilierte Plugin-Framework erreichen kann, ohne App_Code zu verwenden. Da diese Frage von den ursprünglichen so anders ist, werde ich es separat erhöhen.

War es hilfreich?

Lösung 3

Es scheint unwahrscheinlich, dass ich Code in meinem MVC Web-App Montage von App_Code zur Entwurfszeit verweisen kann. Ich glaube, das ist nur die Art der Web Application-Projekte in Visual Studio und die Tatsache, dass Code in dem Verzeichnis App_Code in eine andere Assembly kompiliert werden.

In meiner ursprünglichen Frage erklärte ich, dass ich wollte, war App_Code verwenden, da es die dynamische Kompilierung Fähigkeiten. Das Nachdenken über meine Erweiterbarkeit Anforderungen, die Tatsache, dass Intellisense Eigenschaft nicht Arbeit sollte kein Problem sein, da der ganze Punkt ist, dass ein IDE nicht erforderlich Plugins entwickeln - wenn ich von Visual öffnen werde nach oben Studio, sich zu entwickeln ich auch kann nur Klassenbibliotheken verwenden.

So Denken über mein Plugin-Architektur, ich bin gut mit der Vorstellung meiner Plugins definieren ( http://weblogs.asp.net/justin_rogers/articles/61042.aspx ) und ich kann in einem bestimmten Verzeichnis automatischen Laden von Plugins tun wie folgt:

            var assemblies = new List<Assembly>();
        var di = new System.IO.DirectoryInfo(Server.MapPath("~/Plugins"));

        di.GetFiles("*.dll").ToList().ForEach(x => {
            assemblies.Add(Assembly.LoadFrom(x.FullName));
        });

        List<Plugin> ExternalPlugins =
            Plugin.InitializePlugins(assemblies).ToList();

Der einzige Grund für nicht / ist mit Leistung war. Da jedoch das Plugin-Projekt die wichtigsten Web-Projekt verwiesen endete ich Post Build Ereignisse zu verwenden, mit bis alles in Schach zu halten -., Die ich nicht wie

So eine bessere Lösung (wie durch eine Anzahl von Personen vorgeschlagen) ist eine Konfigurationsdatei verwenden Plugins zu definieren und die DLLs in dem Behälter als normal fallen.

Aber mit all diesen unterschiedlichen Ansätzen mich um die anfängliche Anforderung am Fußleisten -. Der Lage sein, Plugins zu zwicken on the fly keine IDE und ohne Notwendigkeit, die Anwendung manuell kompilieren

So in diesem Fall wird mit App_Code wirklich so schlecht, und es wird wieder kommen, mich zu beißen? ...

Andere Tipps

Sie könnten versuchen, die Dateien „Build Action“ in den Eigenschaften von „Compile“ auf „Inhalt“ zu ändern. Dann würden sie wie eine Website erstellt werden. Der folgende Artikel erklärt es:

http://vishaljoshi.blogspot.co.uk /2009/07/appcode-folder-doesnt-work-with-web.html

ASP.NET MVC verwendet eine Webanwendungsprojekts im Gegensatz zu einer Website . Ein Webanwendung Projekt muss kompiliert werden. Das App_Code Verzeichnis macht keinen Sinn in einem solchen Anwendungstyp.

Es gibt eine Antwort. Für MVC3 zumindest. Die Lösung nicht als Lösung öffnen. Öffnen Sie es als eine Website von der lokalen IIS (vorausgesetzt, das ist, wie Sie es ausführen). Dann werden Sie Ihre dynamische app_code Code sehen mit Intellisense zeigt nach oben. Aber Sie werden nicht in der Lage sein, alle anderen Code-Bibliotheken zu durchsuchen, die außerhalb sind. Sie werden eine andere Instanz von Studio und Öffnung als eine Lösung brauchen, das zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top