无法加载文件或程序集 'Microsoft.SqlServer.Smo,版本 = 10.0.0

Posted

技术标签:

【中文标题】无法加载文件或程序集 \'Microsoft.SqlServer.Smo,版本 = 10.0.0【英文标题】:Could not load file or assembly 'Microsoft.SqlServer.Smo, Version=10.0.0无法加载文件或程序集 'Microsoft.SqlServer.Smo,版本 = 10.0.0 【发布时间】:2012-10-16 22:03:55 【问题描述】: 操作系统:Microsoft Windows NT 5.2.3790 Service Pack 2 版本:2.0.50727.42

正在做:创建表格...

Rec:system.m.FileNotFoundexception:无法加载文件或程序集 'microsoft.sqlserver.smo,版本=10.0.0.0,文化=中性文件名: 'microsoft.sqlserver.smo,版本=10.0.0.0,文化=中性, PublicKeyToken=89845dcd8080cc91' 在 claimure.Forml.Runsqlscript(string connstring, streamReader sr) 在 myapp.Forml.bw_Dowork(object sender, DoworkeventArgs e) 'MN: Assembly 绑定日志记录已关闭。启用程序集绑定失败 记录,设置注册表值 (NKLm\software\microsoft\Fusion!enableLog] (DwoRD) 为 1。注意:有 是与装配绑定失败相关的一些性能损失 记录。要关闭此功能,请删除注册表值 (NKLm\software\microsoft\Fusion!enableLog)。

在装有 SQL Server 2005 的 Windows 2003 服务器上运行我的应用程序时出现上述错误。

我知道有一个解决方案可以从http://www.microsoft.com/en-us/download/details.aspx?id=24793下载SQLServer2005_XMO

我已经这样做了,但是安装后需要重新启动服务器,这暂时不可行。

我需要使用服务器对象。

 using Microsoft.SqlServer.Management.Smo;
 using Microsoft.SqlServer.Management.Common;  

        using (SqlConnection connection = new SqlConnection(connString))
        
            Server server = new Server(new ServerConnection(connection));
            server.ConnectionContext.StatementTimeout = 2400;
            server.ConnectionContext.ExecuteNonQuery(sqlString);

        

是否可以将 dll 加载到与我的应用程序相同的目录中并从代码中引用它?

谢谢。

编辑:添加完整错误

【问题讨论】:

完整的错误信息是什么?错误消息指出它无法加载程序集,但它也会说明为什么。可以提供吗? SMO 版本 10.0 = SQL Server 2008 的 SMO - 因为您有 SQL Server 2005,所以您可能引用了错误的 SMO 程序集... 这必须在不同的 SQL 版本上工作 - 2005 -> 2008。我已经测试了 2008 服务器并且它工作,现在测试 2005 并获得上述结果。 - 不知道如何做到这一点.. using 语句会选择我的开发机器上的版本吗? 是的 - 但如果您使用 SMO v10.0 在装有 SQL Server 2005 的服务器上安装应用程序 - SMO v10.0 程序集在哪里?您是否将它们与您的应用一起发布? 它们没有与应用程序捆绑在一起,但我可以访问服务器,我可以将 dll 文件放在服务器上/安装它而无需重新启动服务器吗? 【参考方案1】:

通过构建 MSI 安装程序并包含所有必需的 DLL 解决了这个问题。 谢谢指点。

【讨论】:

以上是关于无法加载文件或程序集 'Microsoft.SqlServer.Smo,版本 = 10.0.0的主要内容,如果未能解决你的问题,请参考以下文章

能加载文件或程序集“Aspose.Cells”或它的某一个依赖项。无法验证强名称签名

无法加载文件或程序集,但已加载

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝