使用不同的次要版本

时间:2016-10-03 14:17:36

标签: c# .net reporting-services .net-assembly

我们有一个使用SSRS客户端版本的报告项目,即RDLC文件。 为此,我们使用Nuget-Package" Microsoft.ReportViewer.Windows"唯一的版本可用。文件版本是" 11.0.3452.0"。 一切正常,但在ONE服务器上,当我们安装" Microsoft Report Viewer 2012 Runtime CTP"进入GAC,文件版本" 11.0.1443.3",使用这些程序集,SubReports显示消息

  

错误:无法显示子报表。

根据我的理解,预期的行为是,具有相同Major-Version的gac程序集优先于本地版本。

现在有趣的部分:我插入了一些调试来打印出所有已加载的程序集:

protected void BtnAssemblies_Click(object sender, EventArgs e)
{
    var sb = new StringBuilder();
    sb.Append("<br />");

    var sbExceptions = new StringBuilder();
    sbExceptions.Append("<br />");

    var t = new LocalReport();

    var reportViewerAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
    for(int i = 0; i < reportViewerAssemblies.Count();i ++)
    {
        var ass = reportViewerAssemblies[i];

        try
        {
            sb.Append(ass.FullName);
            sb.Append(": ");
            sb.Append(ass.CodeBase);
            sb.Append("<br />");
        }
        catch(Exception ex)
        {
            sbExceptions.Append(ass.FullName);
            sbExceptions.Append("<br />");
        }
    }

    var str = sb.ToString();
    str += "<br />";
    str += "<br />";

    str += sbExceptions.ToString();
    LblAssemblies.Text = str;
}

除了4个预期的集会外:

  • Microsoft.ReportViewer.Common.DLL
  • Microsoft.ReportViewer.DataVisualization.DLL
  • Microsoft.ReportViewer.ProcessingObjectModel.DLL
  • Microsoft.ReportViewer.WinForms.DLL

加载的程序集完全相同。 由于我不知道如何发生这种情况,我试图修复&#34;覆盖绑定的问题,因为我还是想使用本地程序集。 由于无法重定向同一版本,我尝试了文件版本:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.ReportViewer.Common.dll" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="11.0.1443.3" newVersion="11.0.3452.0" />
  </dependentAssembly>
</assemblyBinding>
</runtime>

哪个也行不通。 所以我的问题:

  • 如何在GAC中安装不同的次要版本 导致ONE服务器失败?
  • 有没有办法找到有关装载的装配的更多信息?不幸的是,我们没有直接收到错误,只是一个毫无意义的消息
  • 作为一种解决方法,是否有可能否决GAC或对文件进行重定向-tiviob

0 个答案:

没有答案