无法加载文件或程序集 'Microsoft.SqlServer.Types 即使使用 Copy Local
Could not load file or assembly 'Microsoft.SqlServer.Types even with Copy Local
我有一份关于我的网络应用程序的内部报告,当我浏览到它时,它会按预期在本地显示。我正在使用带有标准 apsx
网页的 rdlc
和 xsd
来呈现报告。
我现在已经部署到我的登台服务器,当我尝试浏览到显示我得到的报告的页面时:
An unexpected error occurred in Report Processing.
Could not load file or assembly 'Microsoft.SqlServer.Types, Version=11.0.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)
在本地,我通过浏览到 Microsoft.SqlServer.Types
添加了对 Microsoft.SqlServer.Types
的引用:
C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types.0.0.0__89845dcd8080cc91
并且我已将其设置为 Copy Local
并且可以在暂存服务器上的 bin 文件夹中看到 .dll
,但是我仍然收到错误消息。
出于兴趣,我从我的本地计算机复制了 .dll
,然后 ftp 将其复制到登台服务器和 bin 文件夹中。然后它暂时起作用,直到我做了另一次提交,擦除 bin 文件夹并返回错误。
好像 Microsoft.SqlServer.Types
的版本在临时服务器的 OS 上已经过时了?
这是怎么回事?
如果您确定 dll 在 bin 文件夹中,它可能正在寻找 one of its dependencies
。
您是否尝试删除引用并添加以下 NuGet 包而不是从 GAC 引用?
升级 Visual Studio 和 Sql 服务器实例后出现了同样的问题。
重新安装SQLSysClrtypes.msi和ReportViewer.msi包后问题消失了,可以下载here
希望对大家有所帮助。
我也遇到同样的问题,但问题是 app.config 中的绑定重定向尚未更新到新版本。通常更新 nuget 包会自动完成,但这个 nuget 包在一个引用的项目中。简单修复:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings />
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<!-- <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" /> -->
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
安装 nuget 包后,复制 Microsoft.SqlServer.Types.dll
C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types
到我的主机 Web 服务器中我的 Web 应用程序的 BIN 文件夹。
我无法通过使用以下代码在新工作站上编译我的程序
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
问题? Microsoft 默认提供的 SQL Express 服务器,在那段时间从 2017 年更改为 2019 年,我从未注意到,所以 newVersion 必须设置为 newVersion="15.0.0.0".
我复制了文件
My_Solution_Dir)\packages\Microsoft.SqlServer.Types.14.0.314.76\lib\net40\Microsoft.SqlServer.Types.dll
进入“/bin”目录。
我的问题也解决了。
我有一份关于我的网络应用程序的内部报告,当我浏览到它时,它会按预期在本地显示。我正在使用带有标准 apsx
网页的 rdlc
和 xsd
来呈现报告。
我现在已经部署到我的登台服务器,当我尝试浏览到显示我得到的报告的页面时:
An unexpected error occurred in Report Processing.
Could not load file or assembly 'Microsoft.SqlServer.Types, Version=11.0.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)
在本地,我通过浏览到 Microsoft.SqlServer.Types
添加了对 Microsoft.SqlServer.Types
的引用:
C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types.0.0.0__89845dcd8080cc91
并且我已将其设置为 Copy Local
并且可以在暂存服务器上的 bin 文件夹中看到 .dll
,但是我仍然收到错误消息。
出于兴趣,我从我的本地计算机复制了 .dll
,然后 ftp 将其复制到登台服务器和 bin 文件夹中。然后它暂时起作用,直到我做了另一次提交,擦除 bin 文件夹并返回错误。
好像 Microsoft.SqlServer.Types
的版本在临时服务器的 OS 上已经过时了?
这是怎么回事?
如果您确定 dll 在 bin 文件夹中,它可能正在寻找 one of its dependencies
。
您是否尝试删除引用并添加以下 NuGet 包而不是从 GAC 引用?
升级 Visual Studio 和 Sql 服务器实例后出现了同样的问题。
重新安装SQLSysClrtypes.msi和ReportViewer.msi包后问题消失了,可以下载here
希望对大家有所帮助。
我也遇到同样的问题,但问题是 app.config 中的绑定重定向尚未更新到新版本。通常更新 nuget 包会自动完成,但这个 nuget 包在一个引用的项目中。简单修复:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings />
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<!-- <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" /> -->
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
安装 nuget 包后,复制 Microsoft.SqlServer.Types.dll
C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types
到我的主机 Web 服务器中我的 Web 应用程序的 BIN 文件夹。
我无法通过使用以下代码在新工作站上编译我的程序
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
问题? Microsoft 默认提供的 SQL Express 服务器,在那段时间从 2017 年更改为 2019 年,我从未注意到,所以 newVersion 必须设置为 newVersion="15.0.0.0".
我复制了文件
My_Solution_Dir)\packages\Microsoft.SqlServer.Types.14.0.314.76\lib\net40\Microsoft.SqlServer.Types.dll
进入“/bin”目录。 我的问题也解决了。