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

发布于 2025-01-01 05:49:03 字数 351 浏览 0 评论 0原文

假设我有两个项目,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情栀口红 2025-01-08 05:49:03

看看这个:In-Process Side-by-Side可能会有一些帮助。

Have a look at this : In-Process Side-by-Side It might be of some help.

¢好甜 2025-01-08 05:49:03

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

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

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

编辑

我已经尝试过了,但没有成功。 P3 仍然运行 v4.0。您知道此设置是否会对为 P3 生成的程序集产生任何明显的影响吗?例如,无论“特定版本”是否设置为 true,清单都会显示“.ver 2:0:0:0”。

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

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

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

I've tried this, but with no luck. P3 still runs v4.0. Do you know if this setting would have any visible effect in the assembly generated for P3? E.g. The manifest says ".ver 2:0:0:0" whether "Specific Version" is set to true or not.

Try adding this to your app.config:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文