无法加载文件或程序集microsoft.sqlserver.sqlclrprovider 13.100.0.0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法加载文件或程序集microsoft.sqlserver.sqlclrprovider 13.100.0.0相关的知识,希望对你有一定的参考价值。
我使用SQLServer程序集运行我的Winforms应用程序Microsoft.SqlServer.ConnectionInfo(13.100.0.0)Microsoft.SqlServer.SMO(13.100.0.0)
在同一台机器上安装了SSMS 2016(Aug)。这里也安装了SQL 2014开发版。
当我运行我的应用程序时,它给了我一个错误:
сonnection = new ServerConnection(instanceName);
------------
Could not load file or assembly ‘microsoft.sqlserver.sqlclrprovider version=13.100.0.0′
我检查过:GAC包含一些这样的程序集11,12,13.0.0.0,但是没有13.100.0.0。
该应用程序已从以下引用程序集:C: Program Files(x86) Microsoft SQL Server 130 DTS Tasks
Microsoft.SqlServer.ConnectionInfo (13.100.0.0)
Microsoft.SqlServer.SMO(13.100.0.0)
我的操作系统是Windows 7,我认为所有13.100.0都是由SSMS安装程序安装的。如何解决这个问题呢?我可以找到程序集microsoft.sqlserver.sqlclrprovider 13.100.0.0吗?
我遇到过同样的问题。使用更新的SSMS,主SMO现在安装在"C:Program Files (x86)Microsoft SQL Server130DTSTasks"
中,VS中的版本为13.100.0.0(Microsoft.SqlServer.Smo.dll文件具有13.0.15700.28版本),但没有引用Microsoft.SqlServer.SqlClrProvider.dll在GAC。当我选择SSMS提供的那个时,我的代码中会有一个例外。
问题是SSMS的安装程序将这些私有SMO的引用添加到Visual Studio的引用列表中;我在Microsoft Connect发布了一个错误。 Charles Gagnon给了我一个解决方法(使用HintPath),我在.csproj
文件中实现了。
客户端应用程序不应使用Program Files文件夹中的程序集,除非它们来自特定的SDK文件夹(例如“C: Program Files(x86) Microsoft SQL Server 130 SDK”)
您看到的13.100。*版本的程序集目前仅供Microsoft工具使用,因此不会将所有必需的依赖项放在同一位置。 DTS文件夹特别只有SMO程序集的子集,因为该代码不需要诸如SqlClrProvider之类的东西。
请使用SDK文件夹中的程序集或SharedManagementObjects.msi中的程序集作为应用程序的参考。
-Charles Gagnon(chgagnon@microsoft.com)
如果有人不喜欢遇到这种情况,希望这会有所帮助。这篇文章中没有建议的答案(也没有链接到MS Connect站点,也没有任何其他SQL版本的解决方案,也没有修复其他无关的DLL文件,也没有...)解决了我的问题。从GAC添加对DLL的引用导致另一个错误Access Denied。
通过对我的应用程序的debug / bin文件夹进行大量的故障排除并比较SMO和SqlClrProvider DLL文件的版本,我注意到了两件事。 A)详细的错误消息/堆栈跟踪显示对单独的dll的引用,这显然是SMO的依赖项,该DLL是Microsoft.SqlServer.ConnectionInfo.dll。 B)我注意到,当项目编译时,ConnectionInfo.dll的日期/版本显示,当修改了SMO和Common DLL引用的DLL时,它没有被替换。由于这似乎是一种依赖,这没有意义。
结果,我在三个dll中添加了References。 Microsoft.SqlServer.Smo.dll,Microsoft.SqlServer.SqlClrProvider.dll和Microsoft.SqlServer.ConnectionInfo.dll。请注意,我从C: Program Files(x86) Microsoft SQL Server 140 Tools Binn ManagementStudio中提取了这些引用。这不是来自MS的推荐位置(见上面的答案),但坦率地说,此时我并不在意。有效。
结论:尝试将connectioninfo.dll文件添加到您的引用。
如果需要Copy Local = True,则不是100%确定,但是为所有3设置了该属性。
Visual Studio 2013和SQL Server 2014(如果相关)。
编辑:进入另一个与此混乱有关的问题。我们还需要包括SqlServer.Management.sdk.sfc.dll和SqlServer.SqlEnum.dll,因为它们与其中一些调用所使用的枚举有关。这使得总引用为5来修复此错误。希望这有助于某人!
可以通过运行以下MSI来安装Microsoft.SqlServer.SqlClrProvider:
ENU 64 SQLSysClrTypes.msi
ENU 64 SharedManagementObjects.msi
可从以下Microsoft下载链接获得:https://www.microsoft.com/en-us/download/details.aspx?id=52676
该链接提供了MSI列表。您必须浏览列表才能找到上面的项目。
首先安装SQLSysClrTypes.msi,然后安装SharedManagmentObjects.msi。
实际的Microsoft.SqlServer.SqlClrProvider.dll将安装到您的GAC中。其余的相关程序集将安装在C: Program Files Microsoft SQL Server 130
事实证明,在我的情况下,这只是添加所有DLL与引用相同版本号的问题。这必须手动完成。它们都可以在C: Program Files(x86) Microsoft SQL Server 130 DTS Tasks (对于Microsoft.SqlServer.Smo.dll)或C: Program Files(x86) Microsoft SQL Server 130中找到在Microsoft.SqlServer.SqlClrProvider.dll的情况下, Tools Binn ManagementStudio 。如果您查看这两个文件夹中所有相关/必需DLL的属性,它们都会说版本13.0.15700。但是一旦你浏览到每一个,并将其作为参考,VS2015中的参考属性都说版本13.100.0.0 ???????那个怎么样!一切正常。
我有类似的问题,我在Visual Studio中的异常要求:Microsoft.SqlServer.Diagnostics.STrace,Version = 13.0.0.0
在Project References中,我有一个版本为13.0.1601的DLL ...而且版本(由VS浏览)是13.100.0.0,所以我用版本13.0.4424替换了Project References中的DLL ...和版本(由VS浏览)是13.0.0.0
一切都按预期工作。
在这里的某处产生了一些问题。
- 为什么有两个版本的DLL?
- 为什么版本13.0.1601的dll版本为13.100.0.0(由VS浏览),而另一个版本较新的版本13.0.4424的版本为13.0.0.0(由VS浏览)?
明确答案:
客户端应用程序不应使用Program Files文件夹中的程序集,除非它们来自特定的SDK文件夹(例如“C: Program Files(x86) Microsoft SQL Server 130 SDK”)
您看到的13.100。*版本的程序集目前仅供Microsoft工具使用,因此不会将所有必需的依赖项放在同一位置。 DTS文件夹特别只有SMO程序集的子集,因为该代码不需要诸如SqlClrProvider之类的东西。
请使用SDK文件夹中的程序集或SharedManagementObjects.msi中的程序集作为应用程序的参考。
-Charles Gagnon(chgagnon@microsoft.com)
我使用了nuget unoffical package,this one。
它运行良好,不需要在生产服务器上单独安装任何东西。
以上是关于无法加载文件或程序集microsoft.sqlserver.sqlclrprovider 13.100.0.0的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配
无法加载文件或程序集'netstandard,版本 = 2.0.0.0