无法加载文件或程序集'Microsoft.SqlServer.Types, Version=10.0.0.0'或其依赖项之一

10
最近我开始使用SSMS 2017(v17.5)。在我的MVC应用程序中,我遇到了以下错误。
无法加载文件或程序集'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'或其依赖项之一。
我应用程序中唯一改变的是'Microsoft.SqlServer.Types'的版本,现在是'14.0.0.0'。之前是'12.0.0.0'。
根据我的研究,我尝试了以下不同的选项(包括其他stackoverflow文章+谷歌),但是我仍然得到相同的错误。
1. 在'app.config'中添加''
<dependentAssembly>
  <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
  <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>

Global.asax.cs文件的Application_Start方法中添加以下行。
SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";

使用NuGet安装Microsoft.SqlServer.Types。
PM> Install-Package Microsoft.SqlServer.Types
  • 在整个项目中搜索了10.0.0.0的引用,但没有找到任何引用。
  • 我已经安装了Microsoft System CLR Types for SQL Server,适用于2012、2014、20162017
  • 我在这里漏掉了什么?


    2
    我假设你的查询正在运行 SQL Server 2017?你的表是否有 hierarchyid 列? - Aaron Bertrand
    @AaronBertrand 是的,它正在运行2017版本。不,那个表没有 hierarchyid - GThree
    还有其他奇特的数据类型吗?您能展示带索引的CREATE TABLE吗? - Aaron Bertrand
    @CSharper 是本地构建失败还是在远程服务器上失败?此外,当您提到搜索该程序集时,是否通过解决方案资源管理器进行搜索?在解决方案上方的“搜索解决方案资源管理器”文本字段中输入 Microsoft.SqlServer.Types,然后您将看到所有引用它的项目。检查每个对 Microsoft.SqlServer.Types 的引用的属性,看看哪一个是针对 10.0.0.0 的。 - Always Learning
    @AlwaysLearning,我刚刚找到了解决方案,并在下面添加了我的答案。希望这有意义。谢谢。 - GThree
    3个回答

    13

    经过近一天的努力,我终于解决了这个问题。根据我的上述问题,选项一对我有用。唯一需要调整的是将此添加到web.config而不是app.config中。希望这能帮助其他人。

    代码: web.config

    <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>
    

    1
    谢谢,那个提示让我找到了解决方法。虽然不完全相同。通过VS,我为项目添加(重新?)添加了对Microsoft.SqlServer.Types的引用(右键单击项目,添加引用,在扩展中)。它添加了版本13。在我的web.config中,我只是将Version = 10.0.0.0更改为Version = 13.0.0.0。成功地绕过了这个我可能已经有2年没有碰过的旧应用程序... - AnOttawan

    1

    对于一个出现相同错误的网络库项目,我前往NuGet包并安装了这个库:

    Microsoft.SqlServer.Types
    

    并且它能够正常工作。


    0

    Microsoft.SqlServer.Types -Version 14.0.314.76 是目前的版本。请尝试更改您的版本号。其次,请检查您的 .csproj 文件,应用程序也会在 .csproj 文件中维护其依赖项。


    我的 .csproj 文件具有相同的版本。 - GThree
    然后尝试清理您的项目,删除所有的bin/lib文件夹,然后重新构建您的项目(如果您还没有尝试过)。 - Anis ur Rehman
    那也没有帮助。 - GThree

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接