如何在Windows8中处理.Net框架版本V4.0和V3.5

本文关键字:V4 版本 V3 框架 Net Windows8 处理 | 更新日期: 2023-09-27 18:29:02

我需要在.net中编写一个简单的程序,该程序可以在其他人没有管理权限的计算机上轻松运行。

问题是Windows 8不再(完全)包含.Net 3.5及更早版本。

.Net 3.5似乎包含了早期的版本,因此2.0版本可以与3.5版本配合使用。但是.net 4似乎不再像.net 3.5那样包含早期版本了。

然而,每一个.net应用程序似乎都与.net版本绑定在一起。在组合中,这意味着您需要为用户可能拥有的每个版本的窗口构建不同版本的.net应用程序。这太疯狂了,而且微软通常非常擅长向后兼容性。

让用户安装.net版本不是一种选择——他们可能没有管理权限。

解决方案

这似乎在*.exe.config 中有效

<startup>
  <supportedRuntime version="v2.0.50727"/>
  <supportedRuntime version="v4.0"/>
</startup>

https://www.devside.net/wamp-server/running-net-3-5-app-on-net-4-5-of-windows-8-and-server-2012

默认的Windows8安装(我刚刚对一个干净的虚拟机进行了一次安装)似乎安装了V1.0、V1.1、V2.0和V4.0,但仅适用于32位。仅为64位安装了V4.0。我的.exe没有指定bitness,所以默认为4.0,因此没有.net。另一种解决方案可能是强制使用32位模式。

(我猜Framework文件夹有32位版本,而不是Framework64文件夹)

如何在Windows8中处理.Net框架版本V4.0和V3.5

我自己还没有测试过,但我相信您需要的正是supportedRuntime配置元素的场景。

然后,您应该构建您的应用程序目标,例如框架3.5(认为它是在Win7中内置的),然后在app.config文件中添加如下内容:

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727" />
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
   </startup>
</configuration>

希望能有所帮助。

您可以在较新的可执行文件中包含较旧的程序集,因此如果您愿意,您可以在要支持的框架的最旧版本中编写应用程序,然后为每个框架版本创建可执行文件。

例如,在2.0 DLL中写入所有内容,然后创建2.0、3.5和4.0 EXE,这些EXE只是引导主DLL。

然后,您的用户只需运行安装在其操作系统上的版本。