我们有一个使用报告查看器2010的单击一次的WinForms应用程序。程序集是私有部署的--也就是说,我们不对它们进行GAC (AFAIK,这是最佳实践,尽管我可能错了)。
我们遇到了以下问题。我们需要报告查看器文件版本10.0.40219.1 (我相信这是来自VS2010 SP1) -它有一些RTM版本(10.0.30319.1)没有的错误修复。不幸的是,这两个程序集的程序集版本是相同的,10.0.0.0。因此,CLR加载程序始终选择GAC程序集而不是本地部署的GAC程序集。
据我所知,所有的Assembly.Load…()方法将首先从GAC加载,所以手动预加载程序集对我们没有真正的帮助。我能看到的唯一解决方案是对我们正在部署的ReportViewer程序集进行GAC -但这听起来不像是正确的做法。
问:对于我们来说,确保加载正确的报表查看器程序集的正确方法是什么?
谢谢,
戴夫。
发布于 2011-07-14 23:24:38
Assembly.LoadFile(path)将加载您想要的文件。
编辑:错误。
发布于 2011-07-16 06:46:25
好了,现在你可以粗暴地玩了。如果您拥有完全信任,您可以连接CreateFileW来打开本地副本,而不是GAC中的副本;但是,如果它已被生成,则不会起作用。
当然,您也可以挂接注册表函数,以便扫描GAC找不到它。
如果有问题的程序集是纯托管代码,您可以通过ildasm运行它,更改私钥,通过ilasm运行它,对它进行签名,然后链接到它。
https://stackoverflow.com/questions/6695700
复制相似问题