C# SMO 和 SqlEnum 引用错误
C# SMO and SqlEnum references error
我正在通过 VS2013
做一个使用 smo
对象的 C# 项目。
我安装了
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;
但出现以下错误
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 的旧包。
在您的 SQL 服务器安装文件夹中有包含必要 DLL 文件的文件夹 (Microsoft.SqlServer.SqlEnum.dll, Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll)
:
- SQL 服务器 2012
C:\Program Files\Microsoft SQL Server0\SDK\Assemblies
- SQL 服务器 2014,2016
C:\Program Files\Microsoft SQL Server0\SDK\Assemblies
您也可以从 Nuget 将您需要的所有 DLL 安装在一个包中:
2012 年:https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO/
2014 年:https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/
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.Smo
的引用时使用的 SDK\Assemblies
文件夹中的 Microsoft.SqlServer.SqlEnum.dll
和 Microsoft.SqlServer.ConnectionInfo.dll
文件。或者您应该从 NuGet 安装匹配的程序集。 DLL 版本 11.0.0.0 代表 SQL Server 2014。
参见Files and Version Numbers and Create a Visual C# SMO Project in Visual Studio .NET。
如果您只从 NuGet 安装一个正确的包,例如 https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/,您应该没问题。
我正在通过 VS2013
做一个使用 smo
对象的 C# 项目。
我安装了
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;
但出现以下错误
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 的旧包。
在您的 SQL 服务器安装文件夹中有包含必要 DLL 文件的文件夹 (Microsoft.SqlServer.SqlEnum.dll, Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll)
:
- SQL 服务器 2012
C:\Program Files\Microsoft SQL Server0\SDK\Assemblies
- SQL 服务器 2014,2016
C:\Program Files\Microsoft SQL Server0\SDK\Assemblies
您也可以从 Nuget 将您需要的所有 DLL 安装在一个包中:
2012 年:https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO/
2014 年:https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/
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.Smo
的引用时使用的 SDK\Assemblies
文件夹中的 Microsoft.SqlServer.SqlEnum.dll
和 Microsoft.SqlServer.ConnectionInfo.dll
文件。或者您应该从 NuGet 安装匹配的程序集。 DLL 版本 11.0.0.0 代表 SQL Server 2014。
参见Files and Version Numbers and Create a Visual C# SMO Project in Visual Studio .NET。
如果您只从 NuGet 安装一个正确的包,例如 https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/,您应该没问题。