winform .net2.0的程序如何运行于.net 4.x
约束
最近有一个winform项目,要求:
(1)程序能够运行在winxp, win7, win8, win10中
(2)安装尽可能简单,尽量不要安装.net framework。即使要安装也要尽可以地小。
为了达成这些要求的,考虑以下因素:
(1)操作系统自带的.net framework版本
以下是各个windows版本自带的.net framework:
windows版本 |
.net framework版本 |
winxp |
无 |
win7 |
.net 3.5(包含.net3.0 .net2.0) |
win8 |
.net 4.5 |
win10 |
.net 4.5 |
(2)各种操作系统的使用率
以下是2016-2017年百度统计中的操作系统占比
可以看到win7占有率最高,其次是winxp。
综合以上两上因素,决定程序的目标框架选择.net 2.0。这样一来,只有winxp需要安装.net framework 2.0,且.net framework 2.0仅20M。
问题
本来以为程序应当可以在各个操作系统上正常运行的。
但是在测试的时候,发现在win8和win10下会出现以下错误:
选择在线安装的话,速度慢得无法接受;
离线采用添加应用程序组件安装的话,需要系统光盘,很麻烦,用户无法接受;
离线安装dotnetfx2.0.exe或者dotnetfx35.exe也会出现上图的提示。
解决方法
在查看了msdn上的文档之后,找到了解决方法。添加一个app.config文件,加入以下配置:
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0"/> <supportedRuntime version="v2.0.50727"/> </startup> </configuration>
配置的意思是:当发现.net4.x时,使用.net4.x,当没有.net4.x的时候,使用.net2.0
参考资料
How to: Configure an App to Support .NET Framework 4 or 4.5
winform .net2.0的程序如何运行于.net 4.x的更多相关文章
- .net 4.0 运行时中运行.net2.0开发的程序
其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的Sy ...
- (转载) .NET2.0程序集无法在.net 4.0 中运行的解决方案
首先在MSDN上看到 4.0 的更新日志中有如下这条: .NET Framework 4 不能自动使用自己的公共语言运行时版本来运行由 .NET Framework 早期版本生成的应用程序. 若要使用 ...
- MONO 如何打包 .NET程序独立运行(winform篇)
.NET程序独立运行是指运行.NET的电脑上,不需要安装.NET框架. .NET程序集“独立运行”并非真正的独立,它是运行在mono运行时基础之上的.由于这个运行时可以独立存在,所以,我们不需要在目标 ...
- ASP.NET程序也能像WinForm程序一样运行[转载]
阅读目录 开始 操作方式 支持的ASP.NET程序类别 它也是个HTTP服务器 支持远程机器访问 不受限于Windows防火墙 尊重每个人的操作习惯 内置多标签浏览器支持 启动参数及配置文件 支持 . ...
- 用.net 2.0(或.net 3.5)开发的程序在.net 4.0的环境中运行的解决方案
引用:.NET2.0程序集无法在.net 4.0 中运行的解决方案 1. 原来是在.net 2.0 (VS2008)的环境下的程序,通过升级到.net 4.0 (VS2013)导致程序运行不了 提示需 ...
- AForge.NET .NET2.0程序集无法在.net 4.0 中运行的解决方案
如有雷同,不胜荣欣,若转载,请注明 最近在项目上一直使用.net4.0 framework,突然发现一个AForge.net中使用ffmepeg下的一个dll时,提示只能在2.0下运行,在众多MSDN ...
- vs2012+ winform+.net4.0发布如何在xp上运行
今天在英文版vs2013打包发布4.0(非4.0 client)的winform时,遇到了在xp上无法运行的情况,.net framework 4.0在xp上已安装.在打包前,winform工程,即菜 ...
- C#程序双击运行之后,界面不显示,但是在任务管理器有进程(一个winform找bug之旅)
最近客户端又出了奇葩事情:http://q.cnblogs.com/q/43038/ 如这篇博问一样.我的一个客户的电脑上程序打开了,进程也有了,就是界面窗体出不来!!! 我是win7是开发机,三四台 ...
- .Net2.0 --Winform结合WebBrowser控件和Socket老技术来实现另类Push~
原文:.Net2.0 --Winform结合WebBrowser控件和Socket老技术来实现另类Push~ 目前的企业级开发比较流行的是Web2.0技术,但是由于Web技术基于请求--响应的交互模式 ...
随机推荐
- Unity中提升像素字体清晰度
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity5.6.0f3 Unity UI系统是非常好的,但默认情况下,使用像像素艺术风格游戏那样需要非常锋利的边框的字体 ...
- Linux services, runlevels, and rc.d scripts
Reference: [1] https://www.linux.com/news/introduction-services-runlevels-and-rcd-scripts A Linux se ...
- 【CSS Cookbook】笔记摘要(一)
概要 CSS的优点:将表现和内容相分离:更好地控制页面布局:大大减少了文件尺寸:缩短了改版时间:提高了易用性. CSS全称层叠式样表(Cascading Style Sheets). 1.问题:如何最 ...
- Amazing ASP.NET Core 2.0
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
- 日志组件二:log4j2
一.背景 随着业务服务(Server App)逐渐增加,我们的业务系统中的日志输出面临的问题越来越多,高并发下对磁盘io这块消耗的越来越大,因此,急需要一个高性能且最好能够支持异步输出日志的日志框架, ...
- Lesser known dplyr tricks
In this blog post I share some lesser-known (at least I believe they are) tricks that use mainly fun ...
- data.table包简介
data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...
- 用超链接传递数组或get方式
<?php /** * 超链接传递数组参数 */ if($_GET['names']){ $arr=explode('-',$_GET['names']);//将数组分割为字符串 print_r ...
- php面向对象3
类的定义 基本定义 class 类名{ 访问修饰符 成员属性; 访问修饰符 成员方法; } 说明: ①类一定要class关键词修饰 ②类名的规范说明,使用大驼峰法 ③php 中,类名不区分大小写.但是 ...
- 转换String三种方式比较:toString()、String.valueOf()、(String)
简单介绍: 1.toString,需要保证调用这个方法的类.方法.变量不为null,否则会报空指针. 2.String.valueOf.这个方法在使用的时候是有些特殊的.一般情况下,如果是确定类型的n ...