能否为多个ASP.NET MVC项目设置一个基础项目?

3

我的团队领导交给了我这个任务,但我有些困惑。我们刚刚开始在我们的店铺中使用ASP.NET MVC进行网站开发,我们希望能够在多个网站中使用常见的设计和功能。

到目前为止,我已经尝试创建具有共同元素的自定义模板,但缺点是(据我所知)模板更新不会自动推送到使用该模板创建的项目中。由于需要将更改自动更新到消费项目,自定义模板对我来说行不通。

我的问题是,是否可能为多个ASP.NET MVC项目设置基础项目,其中基础项目中的更新会传播到消费项目?如果您在这个领域有任何经验,我肯定会很感激一些指导。如果这个问题对您来说似乎很基础,请原谅,但这是我第一次真正涉足ASP.NET MVC。

3个回答

6
我发现在不同项目之间共享资源的最佳方法是创建自己的Nuget包。这些包可以包含任何东西,从可重用类、枚举、扩展方法等类库到完整的Web应用程序,包括控制器、视图、JavaScript、CSS等等。范围完全取决于您能从项目中抽象出多少共性。然后,您可以设置自己的私有Nuget存储库来保存这些包,这样您就不必将它们发布到整个世界上。(虽然,如果您创建了一些其他人也会受益的东西,那么请务必在官方Nuget存储库上共享。)
设置所有内容非常简单。我学习如何创建Nuget包并设置私有存储库只花了一天时间。以下是一些帮助您入门的资源:
  1. 创建和部署包的官方Nuget文档
  2. 使用Package Explorer应用程序通过GUI创建包
  3. 官方Nuspec(包清单文件)参考。
  4. 托管自己的Nuget feeds
  5. 使用SymbolSource集成创建自己的存储库的备选方法
SymbolSource还提供免费的私有存储库,远程托管在他们的服务器上。一些企业环境可能不喜欢将其代码“放在云端”,但如果您可以接受它,这绝对是最简单的入门方法。

0

从经验来看,我所在的公司发现,虽然我们的项目存在共同的设计和功能元素,但不常见的元素可能太广泛了,这超过了需要有某种基础项目的必要性。使用自定义项目模板也会成为维护噩梦,因此要避免使用。

相反,我们选择记录特定设计应该如何设置项目,由团队负责人决定哪些部分适用于他们正在工作的特定项目。

如果存在功能重叠,我们考虑(但实际上还没有做)创建一个通用库(们),并为其设置自己的开发生命周期,然后设置我们自己的NuGet Server以分发通用库到其他项目中。我们尚未这样做,主要是因为我们所做的项目之间的差异足够大,不需要这样做。

但根据您所描述的情况,NuGet包或类似的东西可能是您的选择。


0

虽然我认为没有一种方法可以设置一个基础项目,让其他所有项目都从中继承,但您可以很容易地设置一个常用库项目,其他所有项目都引用它。它可以包括您将使用的所有通用内容的基类(例如ControllerBase)。

这样,更新库项目将允许向所有其他项目添加新功能。您可以配置模板,以便在添加新元素时默认使用共同的基类。

根据您如何引用公共库(编译后的dll/链接的项目引用),您可以获得指向特定版本的稳定链接或跨所有项目的即时更新。我个人更喜欢引用公共dll而不是引用项目,因为这允许项目A使用比项目B旧的版本。将A更新到新版本很简单,但它给您提供了一定的分离级别,以便如果B需要破坏性变更,您无需浪费资源来使A正常工作。

另一个额外的好处是,从源代码控制检出旧版本仍然保证有效,因为它将与创建时使用的库版本绑定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接