无法加载文件或程序集 'Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
Could not load file or assembly 'Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
根据我在 中的回答,我安装了
Microsoft.SqlServer.SqlManagementObjects
Microsoft.SqlServer.Smo
System.Security.Cryptography.ProtectedData
它在基于 .Net Core 2.0 的 Consol 应用程序和Class基于 .Net Standard 2.0 的库上工作:
现在我在我的主要 C# 解决方案中使用它们,其中包含基于 .Net Framework 4.7.1 的 Web 应用程序和 Class 基于 .Net Standard 2.0 的库:
我收到这个错误:
Could not load file or assembly 'Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
这是详细信息:
=== Pre-bind state information ===
LOG: DisplayName = Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
(Fully-specified)
LOG: Appbase = file:///C:/Code/Platform/Platform.Web/
LOG: Initial PrivatePath = C:\Code\Platform\Platform.Web\bin
Calling assembly : Application.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Code\Platform\Platform.Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/cd41b801/927eac2d/Microsoft.SqlServer.Management.RegisteredServers.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/cd41b801/927eac2d/Microsoft.SqlServer.Management.RegisteredServers/Microsoft.SqlServer.Management.RegisteredServers.DLL.
LOG: Attempting download of new URL file:///C:/Code/Platform/Platform.Web/bin/Microsoft.SqlServer.Management.RegisteredServers.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
我尝试了不同的解决方案,例如
The located assembly's manifest definition does not match the assembly reference 但他们没有用
最终,解决方案的组合奏效了:
1) 删除 obj
和 bin
文件夹
2) 从 web.config 文件更新引用,然后从 NuGet 包管理器控制台 运行 此命令以添加新绑定:
Get-Project -All | Add-BindingRedirect
3) 删除 C:\WINDOWS\Microsoft.NET\Framework\~\Temporary ASP.NET Files\ directory
4) 将 dependentAssembly
添加到 web.config:
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Management.RegisteredServers" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-15.100.0.0" newVersion="15.100.0.0" />
</dependentAssembly>
应该和project.cspj一样:
<Reference Include="Microsoft.SqlServer.Management.RegisteredServers, Version=15.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.150.18208.0\lib\net45\Microsoft.SqlServer.Management.RegisteredServers.dll</HintPath>
</Reference>
根据我在
Microsoft.SqlServer.SqlManagementObjects
Microsoft.SqlServer.Smo
System.Security.Cryptography.ProtectedData
它在基于 .Net Core 2.0 的 Consol 应用程序和Class基于 .Net Standard 2.0 的库上工作:
现在我在我的主要 C# 解决方案中使用它们,其中包含基于 .Net Framework 4.7.1 的 Web 应用程序和 Class 基于 .Net Standard 2.0 的库:
我收到这个错误:
Could not load file or assembly 'Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
这是详细信息:
=== Pre-bind state information ===
LOG: DisplayName = Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
(Fully-specified)
LOG: Appbase = file:///C:/Code/Platform/Platform.Web/
LOG: Initial PrivatePath = C:\Code\Platform\Platform.Web\bin
Calling assembly : Application.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Code\Platform\Platform.Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.SqlServer.Management.RegisteredServers, Version=15.2.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/cd41b801/927eac2d/Microsoft.SqlServer.Management.RegisteredServers.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/cd41b801/927eac2d/Microsoft.SqlServer.Management.RegisteredServers/Microsoft.SqlServer.Management.RegisteredServers.DLL.
LOG: Attempting download of new URL file:///C:/Code/Platform/Platform.Web/bin/Microsoft.SqlServer.Management.RegisteredServers.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
我尝试了不同的解决方案,例如 The located assembly's manifest definition does not match the assembly reference 但他们没有用
最终,解决方案的组合奏效了:
1) 删除 obj
和 bin
文件夹
2) 从 web.config 文件更新引用,然后从 NuGet 包管理器控制台 运行 此命令以添加新绑定:
Get-Project -All | Add-BindingRedirect
3) 删除 C:\WINDOWS\Microsoft.NET\Framework\~\Temporary ASP.NET Files\ directory
4) 将 dependentAssembly
添加到 web.config:
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Management.RegisteredServers" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-15.100.0.0" newVersion="15.100.0.0" />
</dependentAssembly>
应该和project.cspj一样:
<Reference Include="Microsoft.SqlServer.Management.RegisteredServers, Version=15.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.150.18208.0\lib\net45\Microsoft.SqlServer.Management.RegisteredServers.dll</HintPath>
</Reference>