我的 .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?
Say I have two projects, P4 and P3, targetting .net 4.0 and 3.5 respectively.
Each project also has a reference to System.Data.
In the case of P4, it will be to System.Data v4.0.0.0
In the case of P3, it will be to System.Data v2.0.0.0
Project P4 also references P3.
If P4 is loaded and executed, it uses the .net 4.0 CLR. At runtime, references to System.Data seem to resolve to v4.0 inside both P4 and P3. I can override this by using assemblyBinding redirects, but then both P4 and P3 resolve to v2.0.
Is there any way I can configure my application so that P4 uses v4.0 and P3 uses v2.0?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看看这个:In-Process Side-by-Side可能会有一些帮助。
Have a look at this : In-Process Side-by-Side It might be of some help.
如果你能控制P3,是的。转到项目的引用部分,找到 System.Data 引用,然后查看其属性窗口(右键单击 -> 属性)。
为“特定版本”属性选择“True”。重新编译、重新部署等。
请注意,如果在尝试加载程序集时计算机上未安装 .NET 2、3 或 3.5,这将导致各种运行时故障。
编辑
尝试将其添加到您的 app.config 中:
If you have control over P3, yes. Go to the references section of the project, find the System.Data reference, and view it's properties window (right-click -> Properties).
Select "True" for the "Specific Version" property. Recompile, redeploy, etc.
Note that this will cause all sorts of runtime failures if .NET 2, 3, or 3.5 are not installed on the machine when the assembly attempts to load.
Edit
Try adding this to your app.config: