格雅百科

vs2010 未处理sql_[VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常...

格雅百科

事件起因:

前些日子安装SQL2005 安装了1整天都没有安装成功,原因是CD1的那几个服务无法选中(灰色) 开始以为是我自己的问题,结果把机器上所有带SQL的东西通通卸载了,之后才知道XP不能装SQL2005 企业版 真实让我白忙活了一场,谁知道,隐患就此埋下了。

?

今天我打开我的VS2010 的服务器资源管理器,要添加一个服务器资源,结果添加失败,报出如下错误:

vs2010连接sql 2005 时 报错未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10

我就奇怪了,平时都好好的,为什么今天就出问题了?

我百度了下,结果是这:

?

我引用一下:

?

?? 直接安装了VS2010后,默认安装了SQLSERVER2008EXPRESS,但是在安装MSSMSE2008时,需要安装什么SERVER PACK。你们知道的,平生最烦的就是微软的补丁软件,况且我又是装得WIN7 64位的,一怒之下,卸载了。装了一个SQL SERVER2005 EXP。今天连接数据库,突然出现“未能加载文件或程序集 Miscrosoft.Sqlserver.Managerstudio…”等一大串。最后搜了一下。解决方案如下,分享给大家。

到 http://www.gyballet.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=228de03f-3b5a-428a-923f-58a033d316e1 微软这个页面下三个文件

SharedManagementObjects.msi,

sqlncli.msi,

SQLSysClrTypes.msi

装上以后,一试,可以了。哈哈。具体原因可以看别的博客,那些高人写的很专业,我属于知其然,不知其所以然的人。

?

?

?

我猛然想起来,之前可能把数据库相关东西卸载,马上用虚拟光驱加载了VS2010的镜像,果然,那个勾没被选中。

?

解决办法:

  我看到有些人说他重新安装了VS2010 后才好,不过我不想那么做,安装一次得好久,咱伤不起,上面那链接里面文件好多,自己都看糊涂了,也不知道下载哪个。。。。最后决定直接就把数据库的那部分安装的用虚拟光驱安装就行了。

?

?

正在安装中......

?

?

?

安装完毕,问题解决

转载于:https://www.gyballet.com/lami/archive/2011/11/17/2252983.html

转自:http://www.gyballet.com/kyo-yo/archive/2010/08/19/VS2010-Use-NET2-In-NET4.html

今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常:

混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,2010年4月18日发布的),而目前官方也没有给出最新的.NET4的数据访问支持。

既然出现这个问题,那肯定是上GOOGLE搜索解决方案,毕竟微软不可能因为升级到了.NET4.0的程序无法访问.NET2.0的程序集吧。后来在著名的www.gyballet.com上果然找到了解决方案,就是在app.config中添加一个配置节:startup

?

1

2

3

<

startup

useLegacyV2RuntimeActivationPolicy

=

"true"

>

?

<

supportedRuntime

version

=

"v4.0"

/>

startup

>

这段配置节的意思是(参考自MSDN,具体地址:http://www.gyballet.com/zh-cn/library/bbx34a2h.aspx):

启用 .NET Framework 2.0 版 运行时激活策略,这是通过使用最新支持的运行时加载所有程序集。

注意:由于config配置文件的特性,如果在config配置文件中存在configSections节点,则必须将configSections放在一个,否则会引发异常:配置系统未能初始化

在原来.NET2.0,.NET3.5的时候,由于程序运行环境本质还是.NET2.0,而到了.NET4.0由于整个程序集的版本更新,以前使用.NET2.0所编写的程序集与.NET4.0的程序集继续拧互操作的时候就会出现上面所说的兼容性问题。

通过MSDN,我们可以知道,startup配置节中的useLegacyV2RuntimeActivationPolicy属性是在.NET4.0中新增的,默认是false,表示:

使用默认的 .NET Framework 4 激活策略,该激活策略将加载 .NET Framework 4 通过使用公共语言运行时 (CLR) 版本 4 所创建的程序集,以及 CLR 早期版本通过使用受支持的低于版本 4 的最高 CLR 版本所创建的程序集。

现在如果当程序在.NET4.0环境下要使用.NET2.0及.NET3.5的程序时就必须将useLegacyV2RuntimeActivationPolicy设置为true,同时还要注意,需要在startup配置节的字节中添加supportedRuntime配置节,并指定为“v4.0”,表示使用.NET4.0运行时来运行程序。

有关更多startup及其子级可以查看MSDN:

startup:http://www.gyballet.com/zh-cn/library/bbx34a2h.aspx

supportedRuntime:http://www.gyballet.com/zh-cn/library/w4atty68.aspx

作者:

kyo-yo

出处:

http://www.gyballet.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

http://www.gyballet.com/b/sqlnativeclient/archive/2008/05/30/sqlncli-msi-for-sql-server-2008.aspx

关键是这位老兄的回复,第三条

DavidDmsVcp - MSFT?

6 Mar 2013 9:13 AM?

#

You can find the sqlncli.msi in a SQL Server feature pack:

Microsoft SQL Server 2008 SP3 Feature Pack -?www.gyballet.com/.../details.aspx

Microsoft SQL Server 2008 R2 SP2 Feature Pack -?www.gyballet.com/.../details.aspx

Microsoft SQL Server 2012 SP1 Feature Pack -?www.gyballet.com/.../details.aspx

转载于:https://www.gyballet.com/Sabre/p/3840691.html

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~