Asp.net mvc 将视图文件作为资源嵌入二进制文件中

Asp.net mvc 将视图文件作为资源嵌入二进制文件中,asp.net-mvc,Asp.net Mvc,我正在尝试创建一个带有少量控制器的.Net库,并希望在多个web项目中重用它们 我已经完成了一半,但我遇到的问题是,每当我将库添加到新的web项目中时,我都需要将所有相应的视图文件分别复制到新项目中。每当我更新库时,我都需要再次重复这些步骤 有没有办法,我可以将视图文件作为资源嵌入dll中,并将其作为嵌入资源传递给“View()”函数 我想实现的是,我想将控制器和相应的视图放在单个dll文件中,这样我就可以轻松地将库作为单个dll文件分发/管理 (我已经找到的一种方法是使用IView接口创建自定

我正在尝试创建一个带有少量控制器的.Net库,并希望在多个web项目中重用它们

我已经完成了一半,但我遇到的问题是,每当我将库添加到新的web项目中时,我都需要将所有相应的视图文件分别复制到新项目中。每当我更新库时,我都需要再次重复这些步骤

有没有办法,我可以将视图文件作为资源嵌入dll中,并将其作为嵌入资源传递给“View()”函数

我想实现的是,我想将控制器和相应的视图放在单个dll文件中,这样我就可以轻松地将库作为单个dll文件分发/管理


(我已经找到的一种方法是使用IView接口创建自定义视图类,并通过写入HTML输出编写器直接呈现输出,但我更喜欢使用视图文件。)

WebFormView类型最终调用BuildManager.CreateInstanceFromVirtualPath。BuildManager中没有从流而不是从虚拟路径获取输入的重载或其他函数。因此,如果您不想自己实现IView,则需要将文件解压缩到磁盘,以便BuildManager可以编译这些文件。您仍然可以将DLL作为单个文件分发,但是需要生成aspx文件,以便BuildManager编译它们。有关详细信息,请参阅。

菲尔·哈克几天前刚刚发布了一篇可能会对您有所帮助的文章;他使用一个数据库来存储视图,使用ruby来处理它们,但是我认为您可以使用他的原型,让它可以相当轻松地用于存储在单独程序集中的视图


只要快速浏览一下代码,我认为神奇的酱汁将实现VirtualPathProviderViewEngine(例如,请参阅“RubyViewEngine”类),并将您的ViewEngine插入ViewEngines.Engines集合(请参阅Global.asax.cs).

您可能可以为此使用一个。

在CodePlex上使用VB.NET XML文本项目查看ASP.NET MVC视图引擎

这是一个自定义视图引擎,最初由Dmitry Robsman构思,他是微软ASP.NET的PUM。每个视图都是一个VB.NET类,命名空间(而不是文件路径)用于将视图连接到控制器。将ASPX视图文件的内容复制到这些VB类中的XML文本中非常简单。作为类,它们被编译到程序集中而不需要任何额外的工作


如果你的控制器是C#,那么你很可能会得到两个DLL,但是Scott Hanselman有一篇博文,是关于让C#和VB一起生活在同一个程序集中的

到codeplex看一看

一旦你的工作完成了

看看有什么要说的