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