c# - 安装 4.x 时 Windows 提示安装 .NET 3.5

标签 c# .net-4.0 .net-3.5 .net-4.5 .net-4.6

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

为此,我让 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;

最佳答案

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

3.5 基于不同的 CLR (2.0),因此存在一些兼容性问题。您需要将您的项目重新定位到 4.0(或更高版本)以避免出现框架安装提示问题。

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

关于c# - 安装 4.x 时 Windows 提示安装 .NET 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840464/

相关文章:

c# - 如何从 Silverlight 中的 HttpWebRequest.BeginGetRequestStream 中更新我的 UI

c# - 在运行时检测使用 "dynamic"关键字作为类型参数

c# - 读取没有任何部分的 ini 文件?

c# - Where 返回 0 行时的 LINQ 查询空异常

c# - 打印包含所有行和所有列的 datagridview 的最佳方法?

c# - WCF DataContract 与 DataContract 接口(interface)

c# - 使用 Entity Framework 的加密列

c# - .NET 4 中不使用 TypedTableBase 的类型化数据集

c# - SslStream.AuthenticateAsClient() 使用未缓存的 CRL 非常慢

c# - CalendarDatePicker 绑定(bind)空值