我有以下解决方案结构:
Solution
\_ProjectA
\_ProjectB (uses 3rd party DLL v1)
\_ProjectC (uses 3rd party DLL v2)
项目A没有直接引用第三方DLL,只是调用项目B和C中的方法。
项目B和C DLL引用的属性已将Specific Version
设置为True
。
我在构建期间收到以下警告:
“无法解决X和Y之间的冲突。任意选择Y”。
正如预期的那样,只有使用所选DLL的项目才能正常工作。 如何强制这些项目使用这些特定版本?
答案 0 :(得分:4)
如何强制这些项目使用这些特定版本?
基本上你不能。当然甚至不容易接近。即使项目A没有直接使用第三方DLL,CLR仍然需要加载它们......此时你已经加载了以下程序集的AppDomain:
我认为您可以一次将同一个程序集的多个版本加载到同一个AppDomain
。
选项:
AppDomain
,一个使用项目B及其版本的第三方程序集,另一个使用项目C及其版本。根据我的经验,这种事情非常繁琐。我怀疑,到目前为止,这些选项中的最后一个是最容易维护的。