今天不知道为什么手贱更新了一下VS2017,把版本号从14.1.1直接提到了15.6.1。
啊啊啊我珍贵的14.1.1版本啊,就这么没了==
紧接而来的是两个问题,一个是CUDA9.1跟不上VS2017的更新节奏,果不其然爆炸了;另一个是旧版本IE对VS2017-15.6.1兼容的问题。
--------------------------
先说VS2017-15.6.1跟旧版本IE的兼容问题。
首先我的IE比较旧,是IE9.0.8112,这个主要是为了在开发时测试页面、JS脚本跟旧版本IE的兼容及显示问题的。但是IE跟JS之间一直是比较“暧昧”的,MS一遍在推广自己的JS架构,一边在浏览器对象间跟谷歌各自搞一种套路。这些都是背景。
当我用VS2017进行调试时,弹出了这样一个框:
很明显这就是旧IE在解释JS脚本时,对对象解释时,文末","报错的问题。比如:
var a = {
f : 120, // 这个,一加就会报错
};
解决问题当然是手动到\Common7\IDE\PrivateAssemblies\plugin.vs.js里一行一行改了。
不过这里还有更快的方法,那就是更新IE。当然备份这个文件之后,然后索性直接把这个文件删了也没有什么大的问题,一般情况下用不着它。
其次是会报错:对象没有addEventListener这个方法。
这个更简单,不用更新IE,直接打开相关文件,把这个方法更改为旧版本window对象中的attachEvent()即可。
--------------------------
接着说CUDA9.1的问题。CUDA追不上VS的更新速度已经是众所周知的了,此次更新之后又遇到了下面这个问题:
error -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!
按照往常的经验,强行把CUDA的预编译检测中对VS的版本限制改高就行了:
打开C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include\crt\host_config.h,把第133行的:
#if _MSC_VER < 1600 || _MSC_VER > 1911
改为:
#if _MSC_VER < 1600 || _MSC_VER > 1920 // 只要版本号够高就行,随便挑个数字
但这次问题有点严峻。因为VS14.x和VS15.x在编译方面做出了修改,所以依旧会出现以下错误:
解决方法是打开 visual studio installer-修改-单个组件,把下面这个东西装上:(对的,就是去用老版本的VC++)
然后:项目-$项目名属性-把工具集换成2015的:
接着,点击:生成-重新生成。
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2017anzhuangwenti/2020/0724/3304.html