我有一个程序集,我想从 appbase 的子文件夹中加载。我在创建 AppDomain 期间在 PrivateBinPath 中设置了该子文件夹。
问题是我在应用程序库中有同一个 DLL 的另一个版本。从外观上看,解析器首先检测到错误的版本,说存在不匹配并停止。因此,永远不会加载正确的版本(位于子文件夹中)。
我已经通过删除应用程序库中的那些 DLL 对此进行了测试,它解决了这个问题。即使找到错误的版本,有没有办法强制搜索?
我有一个程序集,我想从 appbase 的子文件夹中加载。我在创建 AppDomain 期间在 PrivateBinPath 中设置了该子文件夹。
问题是我在应用程序库中有同一个 DLL 的另一个版本。从外观上看,解析器首先检测到错误的版本,说存在不匹配并停止。因此,永远不会加载正确的版本(位于子文件夹中)。
我已经通过删除应用程序库中的那些 DLL 对此进行了测试,它解决了这个问题。即使找到错误的版本,有没有办法强制搜索?
您可以使用AppDomainSetup.PrivateBinPathProbe
:
AppDomainSetup.PrivateBinPathProbe = "x"
编辑:只需将其设置为另一个值null
就足够了,另请参阅此 MSDN 条目:
http://msdn.microsoft.com/en-us/library/system.appdomainsetup.privatebinpathprobe.aspx
您只想使用PrivateBinPath
? 如果是这样,看起来您可以设置PrivateBinPathProbe
为任何非空字符串引用:
将此属性设置为任何非空字符串值,包括 String.Empty (""),以从应用程序的搜索路径中排除应用程序目录路径(即 ApplicationBase),并仅在 PrivateBinPath 中搜索程序集。
当然,如果您确实想要 include ,那也无济于事ApplicationBase
,而是使用PrivateBinPath
in preference。