我的.Net应用程序可以引用两个不同版本的.net框架库吗?

假设我有两个项目,P4和P3,分别针对.net 4.0和3.5。

每个项目还有一个System.Data的引用。 在P4的情况下,它将是System.Data v4.0.0.0在P3的情况下,它将是System.Data v2.0.0.0

P4项目也参考了P3。

如果加载并执行P4,则使用.net 4.0 CLR。 在运行时,对System.Data的引用似乎在P4和P3内解析为v4.0。 我可以通过使用assemblyBinding重定向覆盖它,但P4和P3都解析为v2.0。

有什么方法可以配置我的应用程序,以便P4使用v4.0和P3使用v2.0?

看看这个: 并行处理它可能会有所帮助。

如果你能控制P3,是的。 转到项目的references部分,找到System.Data引用,并查看它的属性窗口(右键单击 – > Properties)。

为“特定版本”属性选择“True”。 重新编译,重新部署等

请注意,如果程序集尝试加载时,如果计算机上未安装.NET 2,3或3.5,则会导致各种运行时故障。

编辑

我试过这个,但没有运气。 P3仍然运行v4.0。 你知道这个设置是否会对为P3生成的程序集有任何明显的影响吗? 例如清单说“.ver 2:0:0:0”是否“特定版本”设置为真。

尝试将此添加到您的app.config: