我们有一个单独的ASP.net MVC解决方案。它目前有超过50个单独的项目,并且快速增长。这导致我们编译时间慢,Visual Studio延迟,从源代码控制中拉下来需要几分钟。
这些项目按部门(例如人力资源,薪资,管理员等)划分为MVC区域并相应地路由(例如/ HR / Recruitment,/ Payroll / Payslips)。
这是我们目前的结构:
- Core web (authentication, menus, helpers, scripts, etc).
- Core libraries (mostly for Core web, database connections, types, etc).
- Areas
- HR
- Recruitment
\ Web
\ Libraries
- Insurance
\ Web
\ Libraries
- Payroll
- Payslips
\ Web
\ Libraries
- [Etc.]
我们希望将这些区域划分为完全不同的解决方案。因此,当您从事人力资源工作时,您只需要打开人力资源的项目。
我们遇到的问题是,核心网络。目前,这些领域正在使用MVC的模板(共享布局)来绘制菜单,我们正在使用核心部分中包含的过滤器来检查身份验证。
我们可以将核心部分转换为.dll并在区域中引用它,但MVC不会在核心网络中从一个区域呈现Razor视图(虽然扩展确实存在,但它们并非如此。正式支持)。此外,我们在核心网络中有一堆脚本,我们必须找到一种重新分配的方法(因此我们不会在每个解决方案中使用不兼容的JQuery版本)。
有没有人有过这方面的经验?利用MVC领域直到解决方案超过它们然后不得不重组?如何在没有大量代码重复的情况下为您现在的个人MVC解决方案提供核心服务?
答案 0 :(得分:1)
Turn your core projects into Nuget packages。这将为您提供一种简单的方法,将它们添加到不同解决方案中的其他项目和无缝版本管理。您可以host your own private Nuget repository,因此不需要在Nuget官方网站上公开。
至于你的观点,使用Razor Generator在你的类库中编译它们,并在你的其他项目中访问它们。