C#SMO和SqlEnum引用错误 [英] C# SMO and SqlEnum references error
问题描述
我正在使用 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屋!