【问题标题】:Can elements of an MVC5 application be compiled as a DLL?MVC5 应用程序的元素可以编译为 DLL 吗?
【发布时间】:2015-03-12 15:19:34
【问题描述】:

VS2013、MVC5、VB、EF6

我从未真正创建过 DLL,但很快就会开始学习它的“来龙去脉”(不是双关语)。但如果没有这些背景,我无法准确理解 DLL 和 MVC5 的可能性。

在 MVC5 中工作时可以将什么编译成 DLL?

控制器:看起来控制器可以变成一个DLL用于其他MVC5应用程序;是这样吗?或者这样做是否存在根本问题?

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

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

感谢您对此的任何见解。

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

【问题讨论】:

    标签: vb.net dll asp.net-mvc-5


    【解决方案1】:

    DLL 只是 .NET 项目的编译结果。您不应该真正考虑将内容放入 DLL 中,而应该考虑如何构建解决方案(要添加哪些项目、什么类型以及数量)。

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

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

    如果您需要与不在同一解决方案中的其他项目共享代码,那么您实际上应该使用您的类库项目create a Nuget package。如果您的代码对全世界都有用,您可以在 nuget.org 上公开发布它,但您也可以改为发布到 private repository。这很棒,因为它允许您在内部项目之间轻松共享代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2011-01-16
      • 2012-02-04
      相关资源
      最近更新 更多