.NET 4.0 兼容 .NET 2.0 的方法
使用.net开发桌面应用,广大亲门最头疼的莫过于客户端部署的问题。基于.net 2.0 的winfrom程序因为 Framework 的分发包大小为20M左右还好解决,不幸的是如果项目中使用了Wcf,wpf 等技术,那个350多M的 .net 3.5 sp1 可以让亲欲哭无泪了。虽然民间流传着很多.net 3.5的精简包,但必竟不是官方的解决方案。
win7自带了.net 3.5 sp1,而且win7的装机量已经很高,所以我们大可以将项目升级到 .net 3.5。
目标:
基于.net 3.5开发的应用程序, 在win7 或安装有.net 3.5 sp1 的机器上可以直接安装运行,而在其它机器上则需要安装.net 4.0框架,使.net 3.5应用程序运行在.net 4.0框架上。
本文的解决方案如下:
1、项目目标框架为 .net 3.5。
2、客户端部署使用.net 4.0 Framework 代替 3.5 sp1;4.0的分发包为48M。
3、软件安装时检测到系统安装有.net 3.5 sp1 则不安装 4.0框架。
要解决的问题:
1、首先需要使 .net 3.5编写的应用程序可以在.net 4.0 环境中运行。
我们可以在app.config中添加如下配置节:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
该节点表示
表示使用.NET4.0运行时来运行程序。有关 startup 的详细信息请移步Msdn 。
这样我们新可以在只安装有.net 4.0的机器上运行 .net 3.5编写的应用程序了。
等等,还没有万事大吉,上面的设置如果在只装有 .net3.5框架 而没有安装 .net 4.0框架的机器上运行会报如下错误:

"好难过,这不是我要的那种结果,结果!" ,解决办法如下:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
红色部分是我们新添加的,目的是指定软件支持在v2.0.50727环境中运行。(ps: .net 3.5 的clr运时环境为 2.0)
Oh oh 目标达到,现在软件已经可以在只安装.net 4.0 或 只安装有 .net 3.5的机器上运行了。
以上内容非本人原创,供参考!
.NET 4.0 兼容 .NET 2.0 的方法的更多相关文章
- 环境篇:Atlas2.0.0兼容CDH6.2.0部署
环境篇:Atlas2.0.0兼容CDH6.2.0部署 Atlas 是什么? Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系 ...
- 【Android】AppCompat V21:将 Materia Design 兼容到5.0之前的设备
AppCompat V21:将 Materia Design 兼容到于5.0之前的设备 本篇文章翻译自Chris Banes(就职于Google,是Android-PullToRefresh,Phot ...
- 环境篇:Atlas2.1.0兼容CDH6.3.2部署
环境篇:Atlas2.1.0兼容CDH6.3.2部署 Atlas 是什么? Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系 ...
- 动态编译库 Natasha 5.0 兼容版本发布
Natasha 5.0 版本已于 2022/10/10 日发布, 此次大版本更迭带来了兼容性支持, 目前 Natasha 可以兼容 standard2.0 及 coreapp3.1 以上版本. 下载使 ...
- .NET Framework3.0/3.5/4.0/4.5新增功能摘要
Microsoft .NET Framework 3.0 .NET Framework 3.0 中增加了不少新功能,例如: Windows Workflow Foundation (WF) Windo ...
- c#学习<四>:C#2.0、C#3.0
委托的演变 委托(C#1.0) 委托可看作是只定义了一个方法的接口,将委托的实例看作实现了这个接口的一个对象. 委托的执行要满足4个条件: 1. 声明委托类型 ...
- USB3.0 和usb 2.0的区别
USB3.0拥有10倍于USB2.0的速度,可惜DIY“江湖”险恶,如果咱们不掌握如何识别USB3.0的方法,很容易被JS忽悠.何况,USB3.0主板不等于USB3.0机箱,很多朋友在选购时都忽略了一 ...
- 如何解决JavaScript中0.1+0.2不等于0.3
console.log(0.1+0.2===0.3)// true or false?? 在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!= ...
- 为什么js中0.1+0.2不等于0.3,怎样处理使之相等?(转载)
为什么js中0.1+0.2不等于0.3,怎样处理使之相等? console.log(0.1+0.2===0.3)// true or false?? 在正常的数学逻辑思维中,0.1+0.2=0.3这个 ...
随机推荐
- django: db - admin
本讲演示简单使用 Django Admin 功能. 一,修改 settings.py,添加 admin 应用: INSTALLED_APPS = ( 'django.contrib.auth', 'd ...
- CodeFirst解决数据迁移问题
CodeFirst解决数据迁移问题 分类: 数据库 设计模式 c#2013-04-24 17:56 137人阅读 评论(0) 收藏 举报 工程用的MVC + Entity Framework,根据Co ...
- hdu 2032
水题 AC代码: #include <stdio.h> int main() { int a[31][31]; int i,j,n; a[1][1]=a[2][1]=a[2][2]=1; ...
- CSS投影实现方式
备用素材: 1.png shadow.png 第一种方式: 利用负边距实现 最终效果图: <!DOCTYPE html> <html lang="en"&g ...
- NHibernate之映射文件配置说明(转载2)
六.鉴别器 在"一棵对象继承树对应一个表"的策略中,<discriminator>元素是必需的, 它定义了表的鉴别器字段. 鉴别器字段包含标志值,用于告知持久化层应 ...
- DNN Module - Responsive Html Tabs 3 介绍
Responsive Html Tabs 模块可以运行于DNN7及以上版本,支持响应式.用户界面较为友好,可以插入自定义的HTML. Demo This is a user-friendly, ful ...
- 3.Android Studio系列教程3——快捷键
原文链接:http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/ 一.更新Android Studio 项目根目录的 ...
- 如何查看Android SDK源码版本
PLATFORM_VERSION := 4.2.2 位于/build/core/version_defaults.mk # # Copyright (C) 2008 The Android Open ...
- 新版本的strcpy_s
char a[32] = "1234"; char b[32] ="123"; strcpy_s(b,sizeof(b), a + 2);//可以用strlen ...
- poj3685 二分套二分
F - 二分二分 Crawling in process... Crawling failed Time Limit:6000MS Memory Limit:65536KB 64bit ...