[英]How to deal with .Net framework versions V4.0 vs V3.5 in Windows 8
我需要在.net中编写一个简单的程序,该程序可以在其他人没有管理员权限的其他计算机上轻松运行。
问题在于Windows 8不再(完全)包含.Net 3.5和更早版本。
.Net 3.5似乎包含了早期版本,因此将2.0定位为3.5版本即可。 但是.net 4似乎不再像.net 3.5那样包含早期版本。
但是,每个.net应用似乎都绑定到.net版本。 结合起来,这意味着您需要为用户可能拥有的每个Windows版本构建.net应用程序的不同版本。 那太疯狂了,Microsoft通常对向后兼容性非常好。
不允许用户安装.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
Windows 8的默认安装(我刚刚对一个干净的VM进行了安装)似乎安装了V1.0,V1.1,V2.0和V4.0,但仅安装了32位。 仅V4.0安装了64位。 我的.exe没有指定位数,因此默认为4.0,因此没有.net。 一种替代解决方案可能是强制使用32位模式。
(我猜Framework文件夹有32位版本,而Framework64文件夹有)
我自己还没有进行过测试,但是我相信您所需要的只是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中,然后创建仅引导主DLL的2.0、3.5和4.0 EXE。
然后,您的用户将只运行其操作系统上安装的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.