以下是引用pangding在2012-6-27 01:31:11的发言:
这么一听感觉 .net 还挺厉害。
那天在 64位 win7 下安了几个软件。结果用的 vc运行库 都不一样,有的要用 2005,有的是 2008,有的是 2010。而且 64位 的软件,即要装64位的库,也要装32位的。
这些运行库之间没有兼容性吗?2010是最早装的,结果 08 和 05 还是要装。光运行库就装了 6 个……
网上看了看,有不少人还反应这些库很难装上,经常会在安装过程中出现各路错误。比如 error 1935 之类的,还是顽疾,不少人反应一但出现,很难解决。唯有重装系统。
这是什么情况,微软为什么不想办法解决解决这个问题呢?比如系统把这 6 个库自带安装上之类的。
不同版本的软件,需要不同版本的运行库,这是一定的。在以前的COM时代,不同版本的运行库需要在系统注册表中注册,表示其可用,比如说扩展名为.DOC的文件默认用Word 97处理之类,但你也知道,如果在系统中安装了WPS,.DOC文件可能被篡改为用WPS打开,或者反过来,总之不能让.DOC自己决定用什么软件处理自己(可以用鼠标右键手动选择,但不能自动化)。.NET是专门解决这种问题的,在用.NET开发的程序中,是自解释的,它自己标明用哪个运行库来运行自己,只要你的电脑中安装了相应的运行库,就能准确地运行,绝不会用VC90的运行库来运行设计于VC10的程序,这个程序本身不用在系统注册表中注册自己用哪个运行库来处理自己,这样一来,尽管你安装的软件是用VS2005、VS2008、VS2010开发的,都能相安无事,不会发生DLL冲突。用COM构建的系统,是无法解决这种冲突的。
Win7自带的.NET库是3.5,64位的Windows可以兼容32位程序。如果安装的程序不是跑.NET 3.5运行库的,就要自己向系统安装相应的.NET框架。不同版本的.NET布置在不同的文件夹中,由于.NET不用向注册表注册,所以安装再多的.NET也没冲突,只是占硬盘空间多了而已。