最近在做C#执行Sql脚本的 程序 ,环境VS2012Sql Server 2008。本地运行没有错误,但是发布到服务器上就报如下错误 “/”应用 程序 中的服务器错误。 未能 加载 文件 或 程序 集“Microsoft.SqlServer.SqlEnum, Version=11.0.0.0, Culture=neutral, PublicKey
最近在做C#执行Sql脚本的 程序 ,环境VS2012+Sql Server 2008。本地运行没有错误,但是发布到服务器上就报如下错误
“/”应用 程序 中的服务器错误。
未能 加载 文件 或 程序 集“Microsoft.SqlServer.SqlEnum, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的 文件 。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IO.FileNotFoundException: 未能 加载 文件 或 程序 集“Microsoft.SqlServer.SqlEnum, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的 文件 。
源错误:
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
程序 集加载跟踪: 下列信息有助于确定 程序 集“Microsoft.SqlServer.SqlEnum, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91” 未能 加载的原因。
警告: 程序 集绑定日志记录被关闭。
要启用 程序 集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与 程序 集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。
看到以上报错信息顿时很慌张,首先我对系统 文件 不熟悉,对错误信息中提到的注册表也知之甚少,google搜索 解决 方案又没有类似的,项目验收在即,顿时如热锅上的蚂蚁。
但是不 解决 肯定是不行的,于是静下心来,慢慢想 解决 方案, 思路 也就有了。
首先,本 程序 我引用了三个dll 文件 ,分别为:Microsoft.SqlServer.ConnectionInfo.dll 、Microsoft.SqlServer.Management.Sdk.Sfc.dll 、Microsoft.SqlServer.Smo.dll
这三个 文件 均是安装sql server时自带的公用类库,可以实现执行sql脚本(如创建、删除表及数据库等),由于我对这三个类库研究的不深,因此其他功能暂时不考虑。
言归正传,知道问题出现在哪几个类库上,我们再来看具体报错信息,“ 未能 加载 文件 或 程序 集“Microsoft.SqlServer.SqlEnum, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的 文件 。” 我在发布的服务器上看到有以上三个库 文件 (C:\Windows\assembly下)但是版本为Version=10.0.0.0 而本地环境中引用的类库版本为Version=11.0.0.0,导致服务器上不认识类库。把本地引用的类库版本换成10,重新生成后发布到服务器上,一切正常,问题 解决 。
以上就是 解决 思路 及方案,以后碰到类似的问题,小伙伴们再也不用发愁了。现在把 解决 方案归纳一下:
1查找环境中是否有相应的类库
2查看版本是否正确(找到对应的类库,右键----属性-----详细信息---版权)
查看更多关于解决“未能加载文件或程序集Microsoft.SqlServer.SqlEnum,”的思的详细内容...