Dot-Net

無法載入文件或程序集 microsoft.sqlserver.sqlclrprovider 13.100.0.0

  • September 28, 2019

我使用 SQLServer 程序集 Microsoft.SqlServer.ConnectionInfo (13.100.0.0) Microsoft.SqlServer.SMO(13.100.0.0) 執行我的 Winforms 應用程序

在同一台機器上安裝了 SSMS 2016(Aug)。這裡也安裝了 SQL 2014 Dev Edition。

當我執行我的應用程序時,它給了我一個錯誤:

с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.0 都是由 SSMS 安裝程序安裝的。如何解決這個問題呢?在哪裡可以找到程序集 microsoft.sqlserver.sqlclrprovider 13.100.0.0?

我遇到過同樣的問題。使用更新的 SSMS,現在"C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Tasks"在 VS 中安裝了 13.100.0.0 版本的主 SMO(Microsoft.SqlServer.Smo.dll 文件具有 13.0.15700.28 版本),但沒有引用 Microsoft.SqlServer.SqlClrProvider.dll廣汽。當我使用 SSMS 提供的那個時,我的程式碼中進一步出現異常。

問題是 SSMS 的安裝程序將這些私有 SMO 的引用添加到 Visual Studio 的引用列表中。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 中的程序集作為應用程序的參考。

-查爾斯·加格農 (chgagnon@microsoft.com)

引用自:https://stackoverflow.com/questions/38933680