繁体   English   中英

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

[英]Can my .Net app reference two different versions of a .net framework library?

假设我有两个项目,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:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM