缺少Microsoft.SqlServer.Types,Version = 11.0.0.0

时间:2013-05-16 08:56:57

标签: azure webforms report

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

  当我尝试时,

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

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

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

谢谢

7 个答案:

答案 0 :(得分:3)

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

打开visual studio并右键单击项目中的Microsoft.SqlServer.Types程序集引用,然后选择属性。将copy local标志从False更改为True并重新编译您的应用程序。您现在应该在应用程序bin文件夹中具有Microsoft.SqlServer.Types.dll文件。

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

答案 1 :(得分:3)

我是如何解决的。

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

  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
  6. 还要确保您在bin目录中的GAC中拥有这些dll的正确版本,并且我在服务器上安装了报表查看器。这些步骤对我有用。

答案 2 :(得分:2)

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

PM> Install-Package Microsoft.SqlServer.Types

按照readme.htm

的说明操作

答案 3 :(得分:1)

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

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

干杯,

答案 4 :(得分:1)

使用以下查询检查您的SQL Server ProductVersion

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

就像这样,

enter image description here

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

enter image description here

答案 5 :(得分:0)

我的经历

在我理解GACBin deploy

之前,我曾经遇到过这类问题

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

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

答案 6 :(得分:0)

确保您没有错过绑定重定向

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