2009-03-21 11 views
7

Sto cercando di creare una libreria .Net con pochi controller e voglio riutilizzarli in più progetti web.Embedding Visualizza i file come risorsa all'interno di Binary

Sono a metà, ma il problema che sto ottenendo è, ogni volta che aggiungo la libreria al nuovo progetto web, ho bisogno di copiare tutti i file di visualizzazione corrispondenti separatamente al nuovo progetto. Ogni volta che aggiorno la libreria, ho bisogno di ripetere nuovamente i passaggi.

Esiste un modo per incorporare i file all'interno di dll come risorsa e passarlo alla funzione "Visualizza()" come risorsa incorporata.

Quello che voglio ottenere è, voglio mettere controller e corrispondenti viste all'interno singolo file dll, in modo che io possa distribuire facilmente/gestire la biblioteca come un singolo file dll

(Andata ho già trovato , sta creando una classe di visualizzazione personalizzata con IView Interface e rende l'output direttamente scrivendo su HTML Output Writer, ma preferisco usare il file View.

risposta

7

Phil Haack ha appena pubblicato un blog post alcuni giorni fa che probabilmente ti avrebbe aiutato; Sta usando un database per archiviare le viste e ruby ​​per elaborarle, ma penserei che potreste prendere il suo prototipo e farlo funzionare per le viste memorizzate in un assembly separato abbastanza facilmente.

Basta una rapida occhiata al codice e penso che la salsa magica stia implementando VirtualPathProviderViewEngine (vedi la classe "RubyViewEngine" per esempio) e inserendo il ViewEngine nella raccolta ViewEngines.Engines (vedi Global.asax.cs) .

0

Il tipo WebFormView chiama infine BuildManager.CreateInstanceFromVirtualPath. Non c'è un sovraccarico o altra funzione in BuildManager per prendere input da uno stream anziché da un percorso virtuale. Pertanto, se non si desidera implementare IView autonomamente, sarà necessario decomprimere i file sul disco in modo che possano essere compilati da BuildManager. È comunque possibile distribuire la DLL come un singolo file, ma i file aspx devono essere prodotti affinché BuildManager possa compilarli. Vedi BuildManager help per i dettagli.

0

Scopri i ASP.NET MVC View Engine utilizzando VB.NET progetto XML letterali su CodePlex http://vbmvc.codeplex.com

Si tratta di un motore di visualizzazione personalizzata originariamente concepito da Dmitry Robsman, che è un PUM per ASP.NET a Microsoft . Ogni vista è una classe VB.NET e lo spazio dei nomi (anziché il percorso del file) viene utilizzato per connettere le viste ai controllori. È abbastanza semplice copiare il contenuto dei file di visualizzazione ASPX nei letterali XML in queste classi VB. E come classi, vengono compilate nell'assemblea senza ulteriori sforzi.

Se i controller sono C#, molto probabilmente si finirebbero con 2 DLL, ma Scott Hanselman ha un post sul blog per far convivere C# e VB nello stesso assembly. http://www.hanselman.com/blog/MixingLanguagesInASingleAssemblyInVisualStudioSeamlesslyWithILMergeAndMSBuild.aspx