解决程序集冲突问题 - Visual Studio项目引用+特定版本

时间:2012-02-14 23:32:56

标签: .net visual-studio-2010 reflection msbuild assembly-resolution

简短问题:如何使用项目引用但构建我的程序集,以便引用是特定的版本引用?


长期问题(更多细节):我们正在为我们的某个应用程序进行模块化设置。将不同的软件组件及其依赖项加载到隔离的AppDomain中。

有些库可能会被不同的组件引用。在某些情况下,我们遇到了装配冲突。 IE我们已经加载了最新版本的库并且旧版本和正在使用的类型之一(使用反射实例化组件)需要获取不再属于新版本的内容,即名称已更改的类型或类似的东西,所以一个TypeLoadException或抛出的任何东西,因为它试图从新版本中提取类型,即使旧版本也已被显式加载。这种避免这类问题的方法似乎是引用特定的版本。

据我所知,从Visual Studio以这种方式设置引用的方法是将引用上的Specific Version属性设置为true,这只能在您将DLL引用为文件引用不作为项目引用。问题是这些其他库仍处于开发阶段,因此我可能需要在测试期间对它们进行调试。我希望能够做所有项目引用让你做的好东西,即导航到定义(主要是,真的,所以我可以在调试时设置断点等)。


<编辑> 为了回应Slak的问题,是的,我确实需要运行这两个版本。它在长期问题中得到了解释。

2 个答案:

答案 0 :(得分:0)

我相信你所问的是我以前必须面对的问题,但对于特定平台的dll而言。您可以更轻松地根据您的要求进行调整。

How to reference different version of dll with MSBuild

答案 1 :(得分:0)

最终工作的解决方案实际上是使用自定义分辨率逻辑签署所有相关程序集。具体版本确实与它无关。