将多个webapp项目(不同区域)部署到同一站点?

时间:2017-07-22 19:46:14

标签: asp.net asp.net-mvc-5 visual-studio-2017 razorengine

单个解决方案中的多个Asp.Net Framework 4.6.2 MVC / Razor项目。 他们使用区域,每个项目将实现一个或多个区域,区别于另一个区域。 一个项目充当" primary",并包含global.asax。 "下属"应用程序可以了解" primary",但反之亦然。

是否可以将这些部署到同一个网站?(本地虚拟机)。 会有一些冲突,例如_Layout.cshtml。

我必须能够为" subordinate"中的类设置依赖注入。项目组装。

由于

-John

1 个答案:

答案 0 :(得分:0)

我认为这不可能轻易实现,因为MVC网站的大部分被预先编译成DLL,但其中一些(例如视图文件)必须实际部署在DLL之外。我认为你可能会遇到冲突或混乱。它当然不是一个可靠,可定义的过程,你可以依靠它来生产。

根据您在评论中描述的内容,以下是一些解决潜在问题的替代建议。这些只是想法,其中一些是我已经完成或已经完成的,并且可能不适合您,但是它们中的任何一个都应该比试图提供部署过程更容易管理:

1)尝试像现在一样在单独的项目中构建区域,但没有围绕它的所有通用MVC内容。即这样做就好像它们只是包含特定于其功能的文件的库。然后你可以将它们打包为Nuget包。准备好后,将软件包安装到“主”站点以创建组合解决方案。这样你就不会遇到布局页面等的冲突。如果其中一个子项目发生了变化,那么主站点就可以升级NuGet包了。您可以通过Visual Studio Online(如果您有订阅)或通过共享网络文件夹在最简单的级别创建私有NuGet订阅源。我认为其他在线供应商也提供私人供稿。我们已经非常成功地将一些默认样式,脚本,布局等应用到我们所有的各种MVC应用程序中。

2)将您的解决方案重新构建为一系列独立的应用程序(这是您已经获得的),但是提供了一个提供联合身份验证/授权的中央服务(例如ADFS,IdentityServer或类似的)和一个Web其他站点可以调用的API(或API)以编程方式访问其他集中式服务和功能。我非常有信心你可以使用路由配置和共享会话使它们全部挂在一起就像它实际上是一个站点一样。

3)将所有内容构建为一个站点,但是各个团队明确分离了他们负责的后端服务,类等,因此他们不会干扰彼此的代码。每个团队都可以在源代码管理中向不同的分支机构签入代码,并且只能合并到共享分支以进行集成/系统测试和部署。您可以使用持续集成服务器在每次签入后测试构建过程,如果您拥有强大的代码审查和门控签入,则可以阻止人们更改他们不应该更改的内容。如果开发生命周期以不同的速度运行,您还可以灵活地从各个区域发布/不发布更新。

4)以上所有的一些组合!