2003年非典时,那时候我还是个20岁出头的程序员,因为公司比较小分工不细致,所以asp+access/sql server、php+mysql都要会,偶尔还要用用vb6和vc6,甚至ps和flash有时候也需要用用。那时候年轻爱研究,一晚上不睡觉,把电脑系统重装个七八回 也是常事,研究点技术,那是兴趣所在。
一天下班路过电脑城,以5块钱一张的价格,买回7张光盘装的visual studio.net 2003,折腾到半夜也没装好,可能是因为自己的电脑太破了,第二天是周末,早早的到公司,又花了大半天,总算是装好了,于是开始了研究微软C#语言和.net框架技术之旅,没想到的是这个工具就这样会伴随我20年。
一晃20多年过去,从vs2003到2005、2008,最终停留在vs2010都10多年了,至于如今都2023年了,为什么vs2010还迟迟不升级,主要原因有二:
1、有些老程序是vc++2010的要维护,要在xp系统上做编译,vs2010以后的版本不支持xp了。
2、现在一些项目vs2010也可以正常开发,配合vss2005,在如今的电脑配置上,那是如丝般的流畅顺滑。
但如今必须要升级的主要原因是JavaScript的es6语法,在VS2010开发的WinForm程序中,如果要用WebBrowser内嵌网页,内嵌的网页如果包含了es6语法的js,没能找到可以正常解析的办法。虽然通过如下代码将ie的版本设置为非正常值,如13000,WebBrowser请求的agent信息可以显示为“edge兼容webkit”,但依然无法解析es6语法的js。
var ie_ver = 11001;
var ass_name = "程序集名";
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (key != null)
{
key.SetValue(ass_name + ".exe", ie_ver, RegistryValueKind.DWord);
key.SetValue(ass_name + ".vshost.exe", ie_ver, RegistryValueKind.DWord);//调试运行需要加上,否则不起作用
}
key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (key != null)
{
key.SetValue(ass_name + ".exe", ie_ver, RegistryValueKind.DWord);
key.SetValue(ass_name + ".vshost.exe", ie_ver, RegistryValueKind.DWord);
}
因此如果要内嵌网页,就只能放弃WebBrowser,转而使用CefSharp方式。但因为VS2010仅支持到.net 4.0,兼容.net 4.0的最高CefSharp版本是49.0.1(官方文档),而2016/6/1发布的CefSharp.WinForms 49.0.1 还不支持 2015年6月推出的JavaScript语言的新标准 ECMAScript 6。
接下来要研究下现在VS升级到那个版本合适呢,大家有没有好的建议?