MVC5 应用程序的元素可以编译为 DLL 吗?

Can elements of an MVC5 application be compiled as a DLL?

VS2013、MVC5、VB、EF6

我从未真正创建过 DLL,但很快就会开始学习 'ins and outs'(无双关语)。但是如果没有那个背景,我不熟悉 DLL 和 MVC5 的确切可能性。

在MVC5中可以编译成DLL的是什么?

Controller:控制器似乎可以变成一个DLL用于其他MVC5应用程序;是这样吗?还是这样做存在根本问题?

视图:视图本身并不是真正的方法,对吧?服务器使用视图文件创建传输页面,但我不知道如何将它们编译成 DLL。

Models:这些实际上是我们的数据库,除了视图模型。它们显然是代码的一部分,就像控制器中的方法一样,它们驱动 EF 根据需要创建数据库。但我不确定我是否理解模型如何成为 DLL。

感谢您对此的任何见解。

也许还有其他更好的方法可以重用在 MVC5 应用程序的特定部分完成的工作。不管是什么,请给我指明正确的方向。

一个DLL只是一个.NET项目的编译结果。你不应该真正考虑将东西放入 DLL 中,而应该考虑如何构建你的解决方案(要添加什么项目、什么类型和多少)。

对于可重复使用的组件,您应该创建一个 class 库项目。在这里,您可以放置​​任何东西,包括控制器、实体、视图模型等。视图比较棘手,因为默认情况下它们不会被编译。但是,您可以使用类似 Razor Generator 的东西,这是一个 Nuget 包,它允许您在 MVC 项目中编译视图和使用预编译视图。

然后,一旦您设置了 class 库,您只需在需要它的解决方案中添加对任何其他项目的项目引用。构建时,编译器将为 class 库创建一个 DLL,并将其放入另一个项目的 bin 文件夹中,但同样,您实际上不必关心这个。

如果您需要与不在同一解决方案中的其他项目共享代码,那么实际上您应该 create a Nuget package using your class library project. If your code has use for the world at large, you can publish it publicly on the nuget.org, but you can also publish to a private repository。这很棒,因为它允许您在内部项目之间轻松共享代码。