以下内容部分来至网上搜集,并加入了个人实际操作的经验补充
使用工具 ASP.NET MVC 3 Application Upgrader
http://aspnet.codeplex.com/releases/view/59008
这个工具要求VS2010的项目,sln文件头为:
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
如果不是以上头Format Version,可能会提示以下错误:
ERROR: There was an error loading the solution file
ERROR: Solution file ****.sln has the wrong file format
如果不是VS2010的项目,修改一下项目sln文件即可,注意保存的时候文件格式为“UTF8+签名”的形式。
第2步、MVC3 => MVC4
使用工具 Auto Upgrade MVC 3 To MVC 4
https://www.nuget.org/packages/UpgradeMvc3ToMvc4
直接在NU控制台 Install-Package UpgradeMvc3ToMvc4
这个工具还提供源码:
https://github.com/NandipMakwana/UpgradeMvc3ToMvc4
升级到mvc3后,可以用vs2013打开项目了,但build不过,先在vs2013中的nuget 安装 UpgradeMvc3ToMvc4
如果安装不了的话,可以把项目的packages.config文件删掉,把packages里的相关文件先清掉,再安装
第3步、ASPX => Razor
这个可能必须要手动处理了,工具处理的结果不太完美,需要手动再处理一下。
工具 MVC ASPX to Razor View Converter
http://razorconverter.codeplex.com/
遇到两个情况的乱码,一是文件编码不是UTF8,二是meta设置的charset的是gbk。
其它参考:
http://markcoleman.tumblr.com/post/7886399187/step-by-step-on-how-to-upgrade-mvc2-to-mvc3-with-razor
这篇文章中提到了 https://github.com/telerik/razor-converter 这个小工具,时间有限就没再测试。
升级后的项目同时支持aspx和razor,这步不是必要处理的.
另外特别说明一下:
VS2010 的 MVC3 Razor 项目(ASPX的正常),直接用 VS2013 打开或升级到 VS2013,都不能识别 MVC 模式,找不到 ViewBag,也不能添加 View/Controller,而且 Views 下的 Web.config 中配置的一些 namespace 也找不到,必须升级成 MVC4 才正常。
转换后的很多cshtml文件编码被改成了UTF-8,要用“UTF-8 + BOM”重新保存一下才行,不然程序运行会出错,并显示乱码。
另外:
如果升级后的项目想要vs2010也能打开,需要修改.csproj文件的ProjectTypeGuids
可以和旧版本的对比下,用旧版本的替换调
例如我的只替换了第一个值 <ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};
就可以用vs2010打开了