gpt4 book ai didi

c# - 允许使用 .NET 2.0 构建的 C# 应用程序在 .NET 4.0/4.5 上运行

转载 作者:可可西里 更新时间:2023-11-01 03:09:07 25 4
gpt4 key购买 nike

我们有一个使用 .NET 2.0 Framework (VS2005) 构建的 C# DLL(我们称它为 myapp.exe),我们发现我们的应用程序无法在只有 .NET 4.0 的机器上运行或以上已安装。为了让我们的应用程序在 .NET 4.0 上运行,我按照这篇文章 Installing .NET Framework V4.0 and Running .NET 2.0/3.0/3.5/3.5Sp1 Applications 将以下几行添加到 myapp.exe.config

<startup>
<supportedRuntime version="v4.0.30319"/>
</startup>

它正在运行。

然后我看到这篇文章还提到了以下内容(尤其是第二段):

Now, I knew that you can’t just take a 3.5 Service Pack 1 application and run it on the V4.0 CLR. It needs a V2.0 CLR or reconfiguring with a tag in order to bend the application to run on the V4.0 CLR and that bending might be something that you don’t want to do.

What I hadn’t realised though was that installing .NET 4.0 wouldn’t install the bits that you need for a 2.0/3.0/3.5/3.5Sp1 application. It would only install the V4.0 CLR and the V4.0 assemblies and not additionally install the equivalent of .NET Framework V3.5 Sp1. So, you’d need to install (e.g.) .NET Framework V3.5 Sp1 yourself along with .NET 4.0

根据我的测试,这意味着我可以使用 .NET 4.0 框架(4.0 程序集/库)在 .NET 4.0 上运行我的 2.0 C# 应用程序,这与文章所说的相矛盾。

或者我在这里遗漏了什么?如果有人可以澄清这一点,这可能会有所帮助。微软并没有真正明确这一点。

最佳答案

我引用:

“.NET Framework 4 向后兼容使用 .NET Framework 版本 1.1、2.0、3.0 和 3.5 构建的应用程序。换句话说,使用以前版本的 .NET Framework 构建的应用程序和组件将在 .NET Framework 4 上工作。”

取自Version Compatibility in the .NET Framework

您对 App.config 文件的想法是正确的,但您确实将自己局限于一行。
我可以建议更自由地使用 supportedRuntime 行吗?

例如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<!--
<supportedRuntime version="v3.5"/> "The .NET Framework version 3.0 and 3.5 use version 2.0.50727 of the CLR."
-->
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.1,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.1" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.2,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3,Profile=Client" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

为什么 supportedRuntime version="v3.5" 被注释掉了?请记住,此配置标识您的应用程序与哪些版本的公共(public)语言运行时 (CLR) 兼容。 CLR 没有 3.0 或 3.5 版本。引用.NET Framework Versions and Dependencies

关于c# - 允许使用 .NET 2.0 构建的 C# 应用程序在 .NET 4.0/4.5 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com