我们有一个使用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个预期的集会外:
加载的程序集完全相同。 由于我不知道如何发生这种情况,我试图修复&#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>
哪个也行不通。 所以我的问题: