【问题标题】:Microsoft.SqlServer.Types, Version=11.0.0.0 missingMicrosoft.SqlServer.Types,缺少版本=11.0.0.0
【发布时间】:2013-05-16 08:56:56
【问题描述】:

我已经在 Azure 网站上发布了该项目,但它引发了异常:

Microsoft.SqlServer.Types, Version=11.0.0.0 在我尝试时丢失 运行报告。本地一切正常。我有 RepowrtViewer.WebForms 和 ReportViewer.Common 都是 11.0.0.0 版本 在项目中。在 SDK/Assemblies 中本地的机器上

我有 Microsoft.SqlServer.Types,版本=11.0..2100.6。我试图将其添加到项目中,但没有奏效。同样的例外,

在哪里可以找到 Microsoft.SqlServer.Types 11.0.0.0?

谢谢

【问题讨论】:

标签: azure webforms report


【解决方案1】:

您可能从本地计算机上的全局程序集缓存中引用 DLL,但它们不存在于 Azure 的 GAC 中。

打开 Visual Studio 并右键单击项目中的 Microsoft.SqlServer.Types 程序集引用并选择属性。将复制本地标志从 False 更改为 True 并重新编译您的应用程序。您现在应该在您的应用程序 bin 文件夹中拥有 Microsoft.SqlServer.Types.dll 文件。

重新部署到 azure,希望错误会消失。

【讨论】:

  • 谢谢詹姆斯和安迪。我仍在解决这个问题,但似乎通过将 GAC 中的 Microsoft.ReportViewer.ProcessingObjectModel 添加到我的项目中,我取得了进展。我仍然需要做一些检查,但我一定会在这里发布结果。再次感谢
  • 我们在 Azure 中运行了一些报告,项目中的以下引用(均以 Microsoft.为前缀):ReportViewer.Common、ReportViewer.DataVisualization、ReportViewer.ProcessingObjectModel 和 ReportViewer.WebForms。它们都设置为在构建时本地复制。希望对您有所帮助。
  • 谢谢安迪。现在一切正常。我添加了 ProcessingObjectModel 并设置为本地复制。我在项目中也有 Common 和 WebForms。
【解决方案2】:

我是如何解决这个问题的。

我必须一共添加 5 个文件,并将这 5 个文件移到我的 bin 目录中。然后我通过浏览到 bin 目录并添加它们来添加这些引用。我重建了我的项目并复制到网络服务器 - 一切正常。

  1. Microsoft.SqlServer.Types.dll(确保复制正确的版本,因为我使用的是 sql 2008,但使用的是报表查看器 11)
  2. Microsoft.ReportViewer.ProcessingObjectModel.dll
  3. Microsoft.ReportViewer.Common.dll
  4. Microsoft.ReportViewer.WebForms.dll
  5. Microsoft.ReportViewer.WinForms.dll

还要确保您在 bin 目录中拥有来自 GAC 的这些 dll 的正确版本,并且我在服务器上安装了报告查看器。这些是对我有用的步骤。

【讨论】:

  • 您从哪里获得 Microsoft.SqlServer.Types.dll 11.0 版的副本?
【解决方案3】:

最好的解决方案是安装 Microsoft.SqlServer.Types NuGet 包。

PM> Install-Package Microsoft.SqlServer.Types

并按照其 readme.htm 中的说明进行操作

【讨论】:

    【解决方案4】:

    我遇到了完全相同的问题,但很快就找到了解决方案。它在此文件夹 C:\Program Files (x86)\Microsoft SQL Server\100 中使用程序集,然后我通过 Visual Studio 删除了我的引用,并从此文件夹 C:\Program Files (x86)\Microsoft 中引用了正确的文件SQL Server\110

    如果您仍然需要此参考,请使用此方法。

    干杯,

    【讨论】:

      【解决方案5】:

      使用以下查询检查您的 SQL 服务器 ProductVersion

      SELECT  
        SERVERPROPERTY('MachineName') AS ComputerName,
        SERVERPROPERTY('ServerName') AS InstanceName,  
        SERVERPROPERTY('Edition') AS Edition,
        SERVERPROPERTY('ProductVersion') AS ProductVersion,  
        SERVERPROPERTY('ProductLevel') AS ProductLevel;  
      GO  
      

      会是这样的,

      你可以在我的例子中看到ProductVersion = 13.0.1601.5。在您的项目中,转到 NuGet 包管理器并搜索 Microsoft.SqlServer.Types。从那里你可以看到,Microsoft.SqlServer.Types 具有相同的ProductVersion 并安装它。

      【讨论】:

        【解决方案6】:

        我的经历

        在我理解GACBin deploy之前,我曾经遇到过这种问题

        您的计算机已将所有已安装的 DLL 放入一个名为 GAC(全局程序集缓存)的位置。因此,如果您的本地程序在执行路径中找不到所需的 DLL,则可以在那里搜索他们的需求。它通常对开发人员本身起作用,但是当您将程序部署到客户端时,可能会出现问题。

        请记住,您始终可以 Bin 部署您的 DLL。首先,转到项目中的引用树并通过浏览您的 GAC(通常为 c:\windows\assembly\GAC_MSIL...)添加所需的 Dll,然后转到添加的 Dll 的属性窗口并将 Copy Local 设置为 @ 987654324@ 。现在您可以发布或部署您的项目并确保它可以正常工作。

        【讨论】:

          【解决方案7】:

          确保您没有丢失绑定重定向

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-21
            • 1970-01-01
            • 2019-04-22
            • 1970-01-01
            • 1970-01-01
            • 2022-12-20
            • 1970-01-01
            • 2021-01-03
            相关资源
            最近更新 更多