我有一个名为A.dll的dll,名字很强,另一个程序集B引用A.dll。我将A.dll放在c:\ myapp中,同时A.dll安装在GAC中。 我希望程序集B从c:\ myapp加载A.dll而不是GAC。但它始终从GAC加载A.dll。我的问题是如何从指定的本地位置而不是GAC加载引用的dll。 感谢。
答案 0 :(得分:3)
根据MSDN page about how the CLR loads assemblies,CLR将在尝试从工作目录加载程序集之前从GAC加载程序集。似乎没有办法解决这个问题。
或者,您可以不将程序集添加到GAC,以便强制CLR按probing查找程序集。
答案 1 :(得分:2)
你必须给它一个不同的[AssemblyVersion]。最终有意义的是,如果版本号相同,则没有理由认为GAC版本不会很好。
答案 2 :(得分:0)
唯一的方法是使用Assembly.LoadFile()加载程序集。这允许您指定要加载的路径。
有几个陷阱让这非常痛苦:
答案 3 :(得分:0)
可以通过托管CLR并实现IHostAssemblyManager和IHostAssemblyStore来实现。这就像使用火箭筒杀死蚊子一样。