Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用不同的次要版本从GAC重定向程序集_C#_.net_Reporting Services_.net Assembly - Fatal编程技术网

C# 使用不同的次要版本从GAC重定向程序集

C# 使用不同的次要版本从GAC重定向程序集,c#,.net,reporting-services,.net-assembly,C#,.net,Reporting Services,.net Assembly,我们有一个报告项目,使用客户端版本的SSRS,RDLC文件。 为此,我们使用Nuget包“Microsoft.ReportViewer.Windows”,它只有一个可用的版本。文件版本为“11.0.3452.0”。 一切正常,但在一台服务器上,当我们将“Microsoft Report Viewer 2012 Runtime CTP”安装到GAC文件版本“11.0.1443.3”中时,会使用这些程序集,并且子报表会显示消息 错误:无法显示子报表 据我所知,具有相同主要版本的gac程序集比本地程序

我们有一个报告项目,使用客户端版本的SSRS,RDLC文件。 为此,我们使用Nuget包“Microsoft.ReportViewer.Windows”,它只有一个可用的版本。文件版本为“11.0.3452.0”。 一切正常,但在一台服务器上,当我们将“Microsoft Report Viewer 2012 Runtime CTP”安装到GAC文件版本“11.0.1443.3”中时,会使用这些程序集,并且子报表会显示消息

错误:无法显示子报表

据我所知,具有相同主要版本的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;
}
protectedvoidbtnasemblies\u单击(对象发送方,事件参数e)
{
var sb=新的StringBuilder();
sb.追加(“
”); var sbExceptions=新的StringBuilder(); sbExceptions.Append(“
”); var t=newlocalreport(); var reportViewerAssemblies=AppDomain.CurrentDomain.GetAssemblies().ToList(); 对于(int i=0;i”); } 捕获(例外情况除外) { sbExceptions.Append(ass.FullName); sbExceptions.Append(“
”); } } var str=sb.ToString(); str+=“
”; str+=“
”; str+=sbExceptions.ToString(); LblAssemblies.Text=str; }
除4个预期组件外:

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;
}
  • Microsoft.ReportViewer.Common.DLL
  • Microsoft.ReportViewer.DataVisualization.DLL
  • Microsoft.ReportViewer.ProcessingObjectModel.DLL
  • Microsoft.ReportViewer.WinForms.DLL
加载的程序集完全相同。 由于我不知道这是如何发生的,我试图通过覆盖绑定来“修复”这个问题,因为我还是想使用本地程序集。 由于无法重定向同一版本,我尝试了文件版本:

<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中安装不同的次要版本 导致一台服务器出现故障
  • 有没有办法了解有关加载的程序集的更多信息?不幸的是,我们没有直接收到错误,只是一条毫无意义的消息
  • 作为一种解决方法,是否有可能否决GAC或对文件versiob进行重定向