C#SMO和SqlEnum引用错误 [英] C# SMO and SqlEnum references error

查看:43
本文介绍了C#SMO和SqlEnum引用错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 smo 对象通过 VS2013 执行C#项目.我安装了

I am doing a C# project by VS2013 which is using smo object. I installed

Install-Package Microsoft.SqlServer.Scripting
Install-Package Microsoft.SqlServer.SqlEnum.dll

来自 Nuget

并包含

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

但出现以下错误

错误9程序集'Microsoft.SqlServer.Smo,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'使用'Microsoft.SqlServer.SqlEnum,版本= 11.0.0.0,文化=中性,PublicKeyToken = 89845dcd8080cc91',其版本高于引用程序集'Microsoft.SqlServer.SqlEnum,Version = 10.0.0.0,文化=中性,PublicKeyToken = 89845dcd8080cc91'

Error 9 Assembly 'Microsoft.SqlServer.Smo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' uses 'Microsoft.SqlServer.SqlEnum, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' which has a higher version than referenced assembly 'Microsoft.SqlServer.SqlEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'

有手吗?

推荐答案

问题是 Smo SqlEnum 组件之间的版本不匹配,这是例外情况.问题是您使用过 Install-Package Microsoft.SqlServer.SqlEnum.dll 的程序包是SQL Server 2008的较旧程序包.

The problem is version mismatch between Smo and SqlEnum component, as the exception specifies. The problem is that the package, you have used Install-Package Microsoft.SqlServer.SqlEnum.dll is an older package for SQL Server 2008.

在您的SQL Server安装文件夹中,有一些包含DLL文件(Microsoft.SqlServer.SqlEnum.dll,Microsoft.SqlServer.ConnectionInfo.dll,Microsoft.SqlServer.Smo.dll)的文件夹:

There are folders containing the neccessary DLL files (Microsoft.SqlServer.SqlEnum.dll, Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll) in your SQL Server installation folder:

  • SQL Server 2012 C:\ Program Files \ Microsoft SQL Server \ 110 \ SDK \ Assemblies
  • SQL Server 2014、2016年 C:\ Program Files \ Microsoft SQL Server \ 120 \ SDK \ Assemblies

您还可以从Nuget中将所需的所有DLL安装在一个软件包中:

You can install all DLLs that you need also from Nuget in one package:

2012: https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO/

2014: https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/

包含的DLL: Microsoft.SqlServer.ConnectionInfo.dll ,Microsoft.SqlServer.ConnectionInfoExtended.dll,Microsoft.SqlServer.Management.Sdk.Sfc.dll, Microsoft.SqlServer.Smo.dll ,Microsoft.SqlServer.SmoExtended.dll,Microsoft.SqlServer.SqlClrProvider.dll, Microsoft.SqlServer.SqlEnum.dll

Included DLLs: Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.ConnectionInfoExtended.dll, Microsoft.SqlServer.Management.Sdk.Sfc.dll, Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoExtended.dll, Microsoft.SqlServer.SqlClrProvider.dll, Microsoft.SqlServer.SqlEnum.dll

您应该使用 Microsoft.SqlServer.SqlEnum.dll &创建对 Microsoft.SqlServer.Smo 的引用时使用的 SDK \ Assemblies 文件夹中的 Microsoft.SqlServer.ConnectionInfo.dll 文件.或者,您应该从NuGet安装匹配的程序集.DLL的11.0.0.0版代表SQL Server2014.

You should either use Microsoft.SqlServer.SqlEnum.dll & Microsoft.SqlServer.ConnectionInfo.dll file from that SDK\Assemblies folder that you have used when creating reference to Microsoft.SqlServer.Smo. Or you should install matching assemblies from NuGet. Version 11.0.0.0 of DLLs stands for SQL Server 2014.

请参见文件和版本号如果您仅从NuGet安装一个正确的软件包,例如 https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/,您应该没问题.

If you install only one correct package from NuGet like https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/, you should be OK.

这篇关于C#SMO和SqlEnum引用错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆