如何合并两个.NET MVC项目?Azure快速启动项目合并部署方案问询
嘿,这事儿我之前在项目里处理过,给你几个实用的方案,你挑适合自己的来:
方案一:直接将两个项目合并到同一解决方案(最快速)
这是最直接的操作方式,适合不想大改代码的情况:
- 先打开其中一个项目的解决方案(比如AAD B2C的
.sln文件) - 在Visual Studio的解决方案资源管理器里,右键点击解决方案名称,选择「添加」→「现有项目」,找到另一个项目(Document DB的
.csproj文件)添加进来 - 接下来要处理几个关键细节:
- 统一NuGet包版本:如果两个项目有相同的NuGet包(比如
Microsoft.AspNet.Mvc),右键解决方案选择「管理解决方案的NuGet程序包」,把重复包的版本统一,避免编译冲突 - 合并
web.config配置:把Document DB项目里的连接字符串、AppSettings等核心配置,复制到主项目的web.config中。注意:重复的节点(比如<connectionStrings>)要合并内容,不要直接覆盖主项目的原有配置 - 调整路由避免冲突:如果两个项目的控制器路由重名(比如都有
HomeController),可以给其中一方的控制器加路由前缀,比如给Document DB的控制器加[Route("docdb/{action=Index}")],这样访问的时候用/docdb就能区分开 - 设置启动项目:右键点击你想作为入口的主项目,选择「设为启动项目」
- 统一NuGet包版本:如果两个项目有相同的NuGet包(比如
方案二:重构为类库+主Web项目(更优雅,适合长期维护)
如果两个项目有重复代码或者你想让结构更清晰,推荐这种方式:
- 新建一个类库项目(比如命名为
Shared.Lib),把两个项目里重复的工具类、数据模型、通用逻辑移到这个类库中,让两个Web项目都引用它 - 选择其中一个Web项目作为主项目(比如保留AAD B2C的Web项目),把另一个项目(Document DB)的控制器、视图、业务逻辑,要么直接移到主项目里,要么拆成一个独立的类库(比如
DocumentDB.Services),然后让主项目引用这个类库 - 合并
web.config:把Document DB的必要配置(连接串、SDK配置等)合并到主项目的web.config里,确保AAD B2C的认证配置完整保留 - 测试所有功能:本地启动主项目,分别验证AAD B2C的登录/认证流程,以及Document DB的读写操作,确保没有问题
合并后的发布注意事项
- 本地测试要充分:合并后一定要先在本地跑通所有功能,避免发布到Azure后出问题
- 发布到Azure WebApp:在Visual Studio里选择主Web项目,右键「发布」,选择你的Azure WebApp即可。如果是整个解决方案,VS会自动处理项目依赖,确保所有必要的代码都被发布
- 配置可以在Azure Portal调整:如果发布后发现配置有问题,不用重新发布,直接到Azure Portal的WebApp「配置」→「应用程序设置」里修改连接串或AppSettings,即时生效
内容的提问来源于stack exchange,提问作者lla.dev
相关产品推荐
相关产品推荐

