将ASPX应用迁移至ASP.NET Core MVC:有无推荐工具或直接转换方案?
你提到的Microsoft.NET.UpgradeAssistant确实只能实现代理模式的过渡,没法完成ASPX到Core MVC的全量自动转换——这是因为ASP.NET Web Forms(ASPX)和ASP.NET Core MVC的架构模型差异极大,前者是基于页面生命周期的事件驱动模型,后者是路由-控制器-视图的请求响应模型,目前没有工具能完全自动覆盖UI、代码后置文件的完整转换。
下面是一些实用的迁移思路和辅助手段:
渐进式迁移(最稳妥方案)
保留原有ASPX应用,借助UpgradeAssistant的代理模式先搭建好Core MVC项目的基础框架,然后逐步迁移:先把通用业务逻辑抽离到Core类库中,再逐个将ASPX页面重写成Razor视图,同时把代码后置文件里的事件处理、数据绑定逻辑拆分到Controller和ViewModel中。这种方式可以避免一次性重构带来的风险,还能让团队逐步适应Core MVC的开发模式。Roslyn分析器辅助代码转换
利用Roslyn编写自定义分析器或使用社区现成的脚本,批量处理一些通用代码的转换:比如把Web Forms的服务器控件语法转换成Core MVC的Tag Helper/原生HTML,把Page类中的属性、方法提取到Controller或ViewModel里。虽然没法完全替代手动工作,但能减少重复劳动。核心页面手动重写
对于业务核心、交互复杂的页面,直接手动重写反而更高效可靠。比如把ASPX中Page_Load这类事件逻辑改成Controller的Action方法,把GridView这类服务器控件换成Tag Helper或前端表格组件,数据绑定逻辑改用Razor的模型绑定语法。第三方控件迁移适配
如果项目中使用了Telerik、DevExpress等第三方Web Forms控件,多数厂商都提供了对应ASP.NET Core版本的控件,可以逐步替换原有控件,同时迁移对应的配置和事件逻辑。
内容的提问来源于stack exchange,提问作者Chitaranjan Pradhan

