Note: Forums will be making significant UX changes to address key usability improvements surrounding search, discoverability and navigation. To learn more about these changes please visit the announcement which can be found HERE.
vs11 安装的时候会覆盖 .net framework 文件夹中的 v4.0.30319 那个文件夹吗?

תשובה vs11 安装的时候会覆盖 .net framework 文件夹中的 v4.0.30319 那个文件夹吗?

  • 2012年4月17日 5:38
     
     

    事情起因是这样的,我的一个域服务中,当使用 Visual Studio 开发服务器时,执行以下代码时会报如下图所示的错误。

    而使用本地 IIS 服务器的时候就很正常,不会出现上述错误。换到另一台电脑上用 vs 自带的环境调试也是没有问题的。

    还有一个问题就是我用 vs 自带的数据库连接工具连接 sql server 也出问题了,如下图所示,这里已经不用 EntityClient 了,直接用的是 SqlClien,但是看样子是一样的异常。

    总结一下,在我现在使用的这台电脑上,在连接远程数据库的时候,只要不是运行在IIS下,就一定会出问题。自己写的 wpf 客户端程序也是这样。而连接本地数据库都是没有问题的。在本地,通过 ssms 连接同一个远程数据库实例也是没有问题的。

    此种状况在另一台电脑上不存在。

    我现在觉得是不是因为我装了 vs11 beta 的问题导致的,因为两台电脑的开发环境就是这个差别了,但是我的程序用的是 .net 4.0,并不是 .net 4.5 beta 啊……

    曾经想过卸载 vs11 不过因为 vs11 装的很辛苦,尝试了那个被微软推荐的 layout 安装方式,装了几乎一天才装好。所以还是想再找找解决办法。

    我后来又试了下,发现在 IIS 中正常,是因为我的 IIS 是运行在 64 位模式下,而 vs2010 在调试时应该还是引用的 32 位的 dll。查看异常的详细信息发现异常发生在 System.Data 程序集中,所以我试着将没有装 vs11 的机器上的 C:\Windows\Microsoft.NET\Framework\v4.0.30319 和 C:\Windows\Microsoft.NET\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089 两个目录下的 System.Data.dll 复制过来替换了我本机的 dll。替换后自己写的不用 EntityClient 只用 SqlClient 的测试程序是可以正常打开连接了,而我自己正式开发的程序再次运行的时候也确实不报在 Open 上失败这个错误了,取而代之的是找不到 “DbProviderFactories.GetFactory(DbConnection)” 方法,我查了一下msdn,发现这个方法是在 .net4.5 中才有的,而我在 vs2010 中的解决方案是如假包换的 .net4.0 应用程序啊。还有就是我在 C:\Windows\Microsoft.NET\ 目录下并没有找到 v4.5 字样之类的文件夹,反倒是 v4.0.30319 里面的 dll 文件的修改时间都被统一刷成了 2012-01-20(好像是,没记住具体日期)。难道这次装 vs11,微软直接把 4.5 的 dll 放到 4.0 下了吗?之前的 1.0、1.1、2.0、3.0、3.5、4.0 都是有自己独立的文件夹啊,真是搞不懂微软了。

    如果真是这样,4.0 被 4.5覆盖,那么我直接卸载 vs11,我原来的 4.0 的 dll 还能回来吗?这也是我没有下决心卸载 vs11 的其中一个原因。

    折腾了好几天了,还是找不到原因所在。希望大家帮我分析一下,或者告诉我该怎么去一步一步自己尝试找出症结所在,谢谢了!

全部回复