Visual Studio 实现 编写一套.net代码,同时编译到 多个平台,多版本的操作笔记
如题,把一套代码.NET代码。编译成多平台,多版本dll文件、
项目结构如图(Cvs文件读写开源组件 https://github.com/JoshClose/CsvHelper)

如上图。项目工程 CsvHelper 是类库的主项目工程。
CsvHelper20,CsvHelper35,CsvHelperPcl 是不同.NET版本对应的项目工程、
类库项目工程、CsvHelper20,CsvHelper35,CsvHelperPcl 使用的是 CvsHelper 的代码文件(直接通过添加 项目链接文件+条件编译符号 实现的)。
下面自己动手来操作一遍咯。感觉被我说得云里糊涂的。o(︶︿︶)o ~
第一步(0x01),创建项目工程:
新建5个项目工程、如下图、

OceanHo.Common (工程代码都写在这个项目里面,.NET版本 4.0)
OceanHo.CommonNET20 (OceanHo.Common针对.NET2.0的版本,.NET版本 2.0)
OceanHo.CommonNET20 (OceanHo.Common针对.NET4.0的版本,.NET版本 4.0)
OceanHo.Common.ExampleDo(测试项目的代码都写在这里,.NET版本 4.0,需要引用OceanHo.Common)
OceanHo.Common.ExampleDoNET20(测试项目的代码都写在这里,.NET版本 2.0,需要引用OceanHo.CommonNET20)
OceanHo.Common.ExampleDoNET40(测试项目的代码都写在这里,.NET版本 4.0,需要引用OceanHo.CommonNET40)
第二步(0x02),添加 条件编译符号:
设置项目 OceanHo.CommonNET20 的 条件编译符号为 NET20,OceanHo.CommonNET40 条件编译符号 设置为 NET40
注:net20 与 net40 自定义,非必须叫这个名称哈、设置完成后,如下图。


第三步(0x03),新建CSharp源码文件:
在OceanHo.Common添加ObjectExtension.cs并加上如图所示的代码(不急哈,代码最后面会丢到github上的)

第四步(0x04),添加源代码文件链接:
在 OceanHo.CommonNET20,OceanHo.CommonNET40 两个项目中添加 OceanHo.Common 的
Properties\AssemblyInfo.cs
ObjectExtension.cs
两个文件的链接引用,操作(选中 OceanHo.CommonNET20 ,鼠标右键 -》 添加 -》 现有项 )


操作完成后,将看到如下图所示。

哦,对鸟、~~~ OceanHo.CommonNET40项目也同上方法进行操作。o(∩_∩)o ~
第五步(0x05),让.NET 2.0 支持静态方法扩展:
在 OceanHo.CommonNET20 中添加 ExtensionAttribute.cs

using System;
using System.Collections.Generic;
using System.Text; /****** Care here namespace *************/
namespace System.Runtime.CompilerServices
{
/// <summary>
/// 为 .NET 2.0 定义一个扩展方法的支持标记类,在不引用升级 .NET 到 3.5 与引用.NET 3.5 程序集的情况下可以支持静态方法扩展
/// </summary>
[AttributeUsage( AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method )]
public sealed class ExtensionAttribute : Attribute
{
}
}
第六步(0x06),写个控制台测试程序看看效果:

第七步(0x07),瞧瞧添加 文件链接 OceanHo.CommonNET20.csproj的东东:

可以看到,实际上,添加的 链接 代码文件,是在 Compile 节点下加了一个 Link 节点链接到这个项目中的咯~
代码为方便自己继续学习,已经放到 github 上咯。
https://github.com/oceanho/OceanHo.MultiVerCompileTests
Visual Studio 实现 编写一套.net代码,同时编译到 多个平台,多版本的操作笔记的更多相关文章
- 使用Visual Studio Code编写和激活ABAP代码 (上)
猪年春节后的第一篇,Jerry祝各位猪年大吉! 2019年的六分之一马上就快过完了,不知道大家在新的一年是否给自己定了新的小目标呢?这里Jerry先预祝大家到2019年年底的时候,在年初制定的小目标都 ...
- 用Visual Studio 2015 编写驱动之前一定要注意的问题!!!
如果你确定要使用Visual Studio 2015 编写驱动,那么在你安装Visual Studio 2015 和WDK之前,一定一定要注意一件事情,那就是确保SDK和WDK版本保持一致,切记切记! ...
- 在ubuntu下使用visual studio code编写python
感觉有了visual studio code之后,不管编写什么语言的代码都可以,简单安装对应的语言插件即可. 这不轮到了最近比较热的python语言,蹭着AI的热度,python语言成为了工程师们又一 ...
- Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询
Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询 SQL 中,有SQL Server Profiler可以用来查询性能以及查看外部调用的SQL ...
- Mac上使用Visual Studio Code开发/调试.NET Core代码
Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今 ...
- Visual Studio使用正则表达式快速统计总共代码行数
原文:Visual Studio使用正则表达式快速统计总共代码行数 按CTRL+SHIFT+F,勾上支持正则表达式,然后输入搜索内容: <span style="font-family ...
- Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本
title: Visual Studio中使用Macros插件给代码添加注释.时间和以及自动脚本 date: 2020-09-11 sidebarDepth: 2 tags: 代码 Visual st ...
- Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法
参考:Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法 Vs2012的下载地址: https://msdn.microsoft.com/en ...
- Rust初步(二):使用Visual Studio Code编写Rust程序(猜猜看游戏)
我是照着下面这篇帮助文档,完成了第一个完整的Rust程序: 猜猜看 游戏 http://kaisery.gitbooks.io/rust-book-chinese/content/content/3. ...
随机推荐
- loaded the "ViewController" nib but the view outlet was not set.'
错误代码: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[U ...
- Android开发--页面切换
1.创建android项目.项目文档如下 2.activity_main布局,Androidv4包里自带的,既然是自带的那么直接拿来用就可以了,当然前提是你得工程里有v4包 <LinearLay ...
- NK3C程序资源占用分析
1.程序放在一个Tomcat下最低配置推荐:最大堆:768M,最大PermGen:160M(-Xmx768m -XX:MaxPermSize=160m) 2.机器最低配置推荐:最小内存2G 3.正式运 ...
- myeclipse中将整块的代码所选中的代码左右移动的快捷键
myeclipse中将整块的代码/所选中的代码左右移动的快捷键选择你要移动的代码,TAB 右移ctrl+TAB左移(我的使用Shift+TAB管用)要是不使用快捷键就是:选中代码,点击右键选中Shif ...
- O2O迈进智能时代 百度构建“服务生态”
经历过山车式资本市场后,O2O领域正努力摆脱“低门槛”,或将迎来技术创新之争.在刚刚落幕的百度世界大会上,百度副总裁.百度糯米总经理曾良宣布:将以百度糯米.手机百度和百度地图为核心构建百度服务生态.在 ...
- C++拼接字符串
例如: 在"/data/misc/media/out.yuv"后面添加序号操作,并输出在path char path[128] = {0}; int Num=this->mN ...
- 机器学习PR:k近邻法分类
k近邻法是一种基本分类与回归方法.本章只讨论k近邻分类,回归方法将在随后专题中进行. 它可以进行多类分类,分类时根据在样本集合中其k个最近邻点的类别,通过多数表决等方式进行预测,因此不具有显式的学习过 ...
- Go Data Structures: Interfaces
refer:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, Decembe ...
- 传输层(3)-缓冲区大小及限制、TCP输出
3.缓冲区大小及限制 影响IP数据报大小的限制. 1)IPv4数据报,最大大小是65535. 2)硬件规定的MTU.以太网的MTU是1500字节.SLIP链路1006字节或296字节 3)路径MTU. ...
- BZOJ1093 [ZJOI2007]最大半连通子图
Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u ...