2011-01-10 62 views
3

我在C#.NET 2.0中构建了一个程序,该程序在框架3.0和3.5下也很好。.Net“任何框架”配置

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

我发现下面的配置在谷歌:

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

添加这在app.config后,我的程序在.NET Framework 4.0中的工作没有任何问题!

我搜索的是.NET的'任何框架'配置,如果安装了.NET 2.0,或者在.NET 4.0中运行我的程序。

如何做到这一点?

+0

我不知道这是可能的,而不*两个*不同的构建(一个.NET2,一个.NET4)。 .NET4使用与.NET2/3/3.5不同的运行时/内核(例如,它不仅仅是一个更新的.NET API的问题),所以除非有一些神奇的选项需要CLR2 *或* CLR4,这是我从未听说过的......可能会有一些更恶魔般的方法,如使用代理可执行文件来加载最佳/唯一CLR,然后加载图像。我不知道:-) – 2011-01-10 22:27:38

回答

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> 
+0

如果它仍然无法正常工作,请确保将AppName.exe捆绑在一起。配置您的应用程序(即使它在同一个文件夹中)时分发它。我认为配置被嵌入在.exe中,但它没有。 – blade 2015-08-20 14:11:50

0

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

去项目设置更改目标框架2.0和我的事情是玩一样,甚至用户在他们的系统

3

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

在系统上安装适当的要求通常更简单,更好。安装.NET 2非常简单(并且在Vista +中默认出现)。这具有在您设计的框架上运行您的程序的优势。

1

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

不知道这是怎么回事,闻起来像是一个沟通问题。也许你不应该把它留给其他人来解决这个问题。当您的应用程序的系统要求包含对XP的支持时,您最好确保它可用。安装项目非常简单。

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