繁体   English   中英

是否可以设置基础项目以跨多个ASP.NET MVC项目使用?

[英]Is it possible to set up a base project for use across multiple ASP.NET MVC projects?

我的团队领导将这一个交给了我,我有点难过。 我们刚刚开始在我们的商店中使用ASP.NET MVC进行Web开发,并且我们希望能够在多个站点中使用通用设计和功能。

到目前为止,我已经研究了使用公共元素创建自定义模板,但缺点是模板的更新(据我所知)不会自动推送到使用该模板创建的项目。 由于更改自动更新到消费项目是一项要求,自定义模板将不适合我。

我的问题是,是否可以设置一个基础项目,以便在多个ASP.NET MVC项目中使用,其中基础的更新会传播到消费项目? 如果你有这方面的经验,我当然会欣赏一些方向。 如果这个问题对你来说很简单,我很抱歉,但这是我第一次真正涉足ASP.NET MVC。

我发现在不同项目之间共享资源的最佳方法是创建自己的Nuget包。 这些可以包含从具有可重用类,枚举,扩展方法等的类库到包含控制器,视图,JavaScript,CSS等的整个Web应用程序。范围完全取决于您可以从项目中抽象出多少通用性。 然后,您可以设置自己的私有Nuget存储库来保存它们,这样您就不必将它们发布到整个世界。 (虽然,如果你确实创造了一些对他人有益的东西,一定要分享官方的Nuget回购。)

设置一切非常简单。 我学会了如何创建Nuget包并在一天内设置私人仓库。 这里有一些资源可以帮助您入门:

  1. 用于创建和部署包的官方Nuget文档
  2. 使用Package Explorer应用程序通过GUI创建包
  3. 官方Nuspec(包清单文件)参考。
  4. 托管您自己的Nuget供稿
  5. 使用SymbolSource集成创建自己的存储库的备用方法

SymbolSource还提供私人回购,远程托管在他们的服务器上,免费提供。 有些企业环境可能不喜欢让他们的代码“在云端”,但如果你可以使用它,这是迄今为止最简单的方法。

根据经验,我工作的公司发现虽然我们的项目中有共同的设计和功能元素,但是不常见的元素可能过于宽泛,因此需要具有某种形式的基础项目。 使用自定义项目模板也成为维护的噩梦,所以要避免这些。

相反,我们选择记录如何为特定设计设置项目,并由团队负责人跟踪他们正在处理的特定项目需要哪些位。

如果存在功能重叠,我们已经考虑(但实际上还没有完成)创建一个具有自己开发生命周期的公共库,然后设置我们自己的NuGet Server以将公共库分发给其他项目。 我们还没有做到这一点,主要是因为我们所工作的项目之间的差异往往足够大,因此无法保证。

但是从你所描述的声音来看,NuGet包或类似的东西可能是你的情况。

虽然我认为没有办法设置其他所有内容继承的基础项目,但您可以很容易地设置一个所有其他人都参考的公共库项目。 它可以包括您将使用的所有常见事物的基类(例如ControllerBase )。

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

根据您引用公共库(已编译的dll /链接项目引用)的方式,您可以获得指向特定版本的稳定链接或所有项目的即时更新。 我个人更喜欢引用常见的dll而不是项目,因为这允许project A使用比project B更旧的版本。 将A更新到新版本是微不足道的,但它为您提供了一定程度的分离,因此如果B需要更改,您不必浪费资源来保持A正常运行。

另一个额外的好处是,从源代码控制中检出旧版本仍然可以保证工作,因为它将与创建时使用的库版本相关联。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM