4

我在 C# .NET 2.0 中构建了一个程序,它在框架 3.0 和 3.5 下也能很好地工作。

但是如果.NET Framework 4.0 是唯一安装的框架,它就不起作用,它需要用户安装2.0。

我在google中找到了以下配置:

<startup>
    <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
</startup>

将此添加到 app.config 后,我的程序可以在 .NET Framework 4.0 上运行,没有任何问题!

我搜索的是 .NET 'Any Framework' 配置,如果已安装,则在 .NET 2.0 下运行我的程序,否则在 .NET 4.0 下运行。

这个怎么做?

4

4 回答 4

3

如果没有按设计进行配置,这是行不通的。.NET 4 使用不同的运行时,当您加载 .NET 2 程序集时,默认情况下,它会在 CLR 版本 2 中加载它。您可以重新配置它以防止这种行为,并将其加载到 CLR 的 v4 中 - 但这并不总是一个好主意。它会导致您编写的代码在与其设计和测试的框架不同的框架上运行,这可能会出现问题。

在系统上安装适当的要求通常更容易和更好。安装 .NET 2 非常容易(并且默认安装在 Vista+ 上)。这样做的好处是可以在其设计的框架上运行您的程序。

于 2011-01-10T22:31:57.337 回答
2

找到了!

这是所有需要它的配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
  </startup>
</configuration>
于 2011-01-14T09:34:35.870 回答
1

很难找到只安装 4.0 的机器.NET 2.0 兼容版本预装在 Vista 和 Win7 机器上,它们可以顺利运行您的程序。您必须拥有一台从未安装过 .NET 的原始 XP 机器。也许是服务器核心。在这种情况下,有人通过安装错误的 .NET 版本犯了一些错误。

不知道这是怎么发生的,闻起来像是沟通问题。也许你不应该把它留给别人来弄错。当您的应用程序的系统要求包括对 XP 的支持时,您最好确保它可用。安装项目非常简单。

您的 app.config 是错误的,<requiredRuntime>自 .NET 1.0 以来已过时。正确的咒语是<requestedRuntime>要求 2.0.50727 和 4.0

于 2011-01-10T22:41:36.580 回答
0

您需要更改应用程序的最低要求。

转到项目设置将目标框架更改为 2.0,即使用户在他们的系统中有 2.0 或 4.0 网络框架,它也能发挥同样的作用

于 2011-01-10T22:21:59.643 回答