2016-10-03 58 views
2

我有一个用C#/ .NET编写的小命令行应用程序。我需要它在.NET 3.5或更高版本安装在操作系统上时运行。安装4.x时提示安装.NET 3.5的Windows

要做到这一点,我在app.config包含以下内容:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" /> 
    <supportedRuntime version="v2.0.50727" /> 
    </startup> 
</configuration> 

该项目框架设置好的来”的.NET Framework 3.5" 。

从我的理解,这两个设置应该向后兼容,以便当某人没有安装3.5,但已安装4.x,它将继续工作。

还有什么我不见了?从我的研究中,我认为我已经把所有这些东西组合在一起,以实现这一点。

编辑:根据下面的问题,这里也是参考和使用语句。有没有第三方组件

以下是在项目引用:

System.Core 
System.Web.Extensions 
System.Windows.Forms 

和以下是我使用的语句:

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Runtime.InteropServices; 
using System.Text; 
using System.Security.Cryptography; 
using System.Web.Script.Serialization; 
using System.Reflection; 
using System.Diagnostics; 
+0

你有第三方组件? –

+0

我不会,我会添加引用和使用原来的问题 – Josh

+0

尝试添加'sku',http://stackoverflow.com/questions/6739412/require-the-net-4-0-full-profile- with-supportedruntime –

回答

1

这是.NET框架的一个已知限制 - 从4开始,如果没有安装以前(在您的情况下,目标版本),它不允许应用程序在自己的运行时间内执行。

3.5是基于不同的CLR(2.0),因此有些compat问题。您需要将您的项目重新定位到4.0(或更高版本)以避免框架安装提示问题。

推荐阅读: CLR Inside Out - In-Process Side-by-Side