我创建了一个Windows表单项目,目标是.NET 4.5
当我在没有安装.NET 4.0的机器上运行exe文件时,收到以下错误消息:
当我安装.Net 4.0并再次运行exe时,我收到以下错误消息:
为什么第一条消息没有说明所需的.NET版本是4.5 ??
答案 0 :(得分:1)
根据this article,运行应用程序的.NET Framework版本按以下顺序确定:
.config
)默认情况下,如果在Visual Studio中设置目标框架,则会在.config
旁边部署.exe
文件。在此.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框架都使用CLR 4.0。
只有sku
(库存单位)指定应用程序支持的.NET Framework的确切版本。
根据this article,只有从.NET Framework 4.0开始才能识别sku
属性(包含版本号)。
作为旁注:.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
文件,则.exe
编译into the manifest所需的CLR版本,在您的情况下为v4.0.30319
。)
只有在安装.NET Framework 4.0之后,CLR 4.0加载程序才会读取sku
属性,因此知道您还必须安装.NET Framework 4.5。这就是你收到这两条错误信息的原因。