2016-04-25 49 views
2

我正在做一个C#项目VS2013这是使用smo对象。 我通过NugetC#SMO和SqlEnum参考错误

安装

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

和包括

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

但得到以下错误

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

有没有办法?

回答

3

问题是SmoSqlEnum组件之间的版本不匹配,如异常指定。 问题是包,你已经使用Install-Package Microsoft.SqlServer.SqlEnum.dll是一个老包的SQL Server 2008

有包含SQL Server安装文件夹中的neccessary DLL文件夹(Microsoft.SqlServer.SqlEnum.dll, Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll)

  • 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文件:

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

您应该从以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 NumbersCreate a Visual C# SMO Project in Visual Studio .NET

如果你从NuGet只安装一个正确的包,如https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/,你应该没问题。