提示用户安装正确的dotnet版本的错误信息不正确
The error message that prompts user to install the correct dotnet version is incorrect
我已经创建了一个 Windows 表单项目并针对 .NET 4.5
当我 运行 在没有安装 .NET 4.0 的机器上运行 exe 文件时,我收到以下错误消息:
当我再次安装 .Net 4.0 和 运行 exe 时,我收到以下错误消息:
为什么第一条消息没有说明所需的 .NET 版本是 4.5?
根据this article,应用程序运行的 .NET Framework 版本按以下顺序确定:
- 配置文件(
.config
)
- 编译版本
- 已安装最新版本
默认情况下,如果您在 Visual Studio 中设置目标框架,您将有一个与 .exe
一起部署的 .config
文件。在这个 .config
文件中 Visual Studio 创建了一个元素 <supportedRuntime>
,它有两个属性:version
和 sku
.NET 4.5 的默认元素如下所示:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
version
是受支持的 CLR 的版本——但这不一定与 .NET Framework 的版本相同,因为从 4.0 到 4.7 的所有 .NET Framework 都使用 CLR 4.0。
只有 sku
(库存单位)指定您的应用程序支持的 .NET Framework 的确切版本。
根据 this article,sku
属性(包含版本号)仅从 .NET Framework 4.0 开始被识别。
附带说明:.NET 3.5 也使用了 sku
,但仅指定您支持 .NET Framework Client Profile (sku="client"
)自 .NET 4.5 以来不再存在。
所以结论是:
您收到第一条错误消息是因为 .NET Framework 3.5 中的 CLR 2.0 加载程序对 sku
属性一无所知。它只知道您正在请求 .NET 4.0 CLR。 (如果您没有 .config
文件,则所需的 CLR 版本编译为 .exe
的 into the manifest,在您的情况下为 v4.0.30319
。)
仅在安装 .NET Framework 4.0 之后,CLR 4.0 加载程序现在读取 sku
属性,因此知道您还必须安装 .NET Framework 4.5。这就是您收到这两条错误消息的原因。
我已经创建了一个 Windows 表单项目并针对 .NET 4.5
当我 运行 在没有安装 .NET 4.0 的机器上运行 exe 文件时,我收到以下错误消息:
当我再次安装 .Net 4.0 和 运行 exe 时,我收到以下错误消息:
为什么第一条消息没有说明所需的 .NET 版本是 4.5?
根据this article,应用程序运行的 .NET Framework 版本按以下顺序确定:
- 配置文件(
.config
) - 编译版本
- 已安装最新版本
默认情况下,如果您在 Visual Studio 中设置目标框架,您将有一个与 .exe
一起部署的 .config
文件。在这个 .config
文件中 Visual Studio 创建了一个元素 <supportedRuntime>
,它有两个属性:version
和 sku
.NET 4.5 的默认元素如下所示:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
version
是受支持的 CLR 的版本——但这不一定与 .NET Framework 的版本相同,因为从 4.0 到 4.7 的所有 .NET Framework 都使用 CLR 4.0。
只有 sku
(库存单位)指定您的应用程序支持的 .NET Framework 的确切版本。
根据 this article,sku
属性(包含版本号)仅从 .NET Framework 4.0 开始被识别。
附带说明:.NET 3.5 也使用了 sku
,但仅指定您支持 .NET Framework Client Profile (sku="client"
)自 .NET 4.5 以来不再存在。
所以结论是:
您收到第一条错误消息是因为 .NET Framework 3.5 中的 CLR 2.0 加载程序对 sku
属性一无所知。它只知道您正在请求 .NET 4.0 CLR。 (如果您没有 .config
文件,则所需的 CLR 版本编译为 .exe
的 into the manifest,在您的情况下为 v4.0.30319
。)
仅在安装 .NET Framework 4.0 之后,CLR 4.0 加载程序现在读取 sku
属性,因此知道您还必须安装 .NET Framework 4.5。这就是您收到这两条错误消息的原因。