Ecco cosa voglio ottenere, voglio separare AREA di ASP.NET MVC come pura singola DLL.Come creare un'area ASP.NET MVC come DLL di plugin?
- Blog.DLL
- Forums.DLL
- FAQ.DLL
Ciascuno di essi sono individuali ASP.NET MVC Area, con la propria CSHTML predefinito o pagine ASPX. L'installazione, la migrazione e il mantenimento di molte pagine, incluse risorse, javascript e così via, sono un vero problema a lungo termine. Poiché la maggior parte di questi cambierà pochissimo.
Il mio sito web finale sarà così.
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
Senza aggiungere nulla, solo far cadere Blog.dll, la mia domanda dovrebbero sostenere/blog e tutte le sue pagine. Se voglio personalizzare qualcosa, di quanto io possa aggiungere zona, e aggiungere solo le pagine cshtml ..
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Areas
\Blog
\Views
\Shared
\BlogLayout.cshtml <-- this will override the look
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
Questo aiuterà a riutilizzare ASP.NET Area Plugin, semplicemente lasciando cadere la dll nella cartella bin. Tuttavia web.config potrebbe richiedere alcune modifiche, ma molto probabilmente salveremo i valori di configurazione nel database e l'unica cosa necessaria sarà "Stringa di connessione di Entity Framework" in web.config.
mie sfide (domande)
- è possibile? Mi sembra sicuro, ma ci saranno problemi di riflessione/permessi?
- Come includere viste cshtml/aspx in una DLL? Versioni probabilmente compilate? Ho visto un paio di template di testo basati su View Engines su codeplex ma sono poco confuso su come effettivamente usarli.
- E come si ottiene ViewEngine per verificare innanzitutto se il file di directory fisica esiste o meno e quindi cercare in cshtml/aspx all'interno della dll stessa come file di risorse?
E il file aspx? Principalmente usiamo cshtml, ma per la stampa di PDF, cshtml non funziona con i tag html sconosciuti, quindi a volte usiamo aspx. –
Non so su ASPX. È passato molto tempo da quando ho smesso di usarlo. Forse il provider di percorsi virtuali potrebbe essere adattato. –
È possibile utilizzare EmbeddedResourceVirtualPathProvider che può essere installato direttamente da Nuget. Funziona con i file delle risorse. https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider#readme – mcintyre321