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. ...
随机推荐
- 关于 C# 调用 JavaWebservice服务,版本不一致的问题
1. A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 问题原因: 客户端和服务端的SOAP协议版本不一 ...
- zend framework2 下载及安装
1.安装XAMPP 2.安装zend studio 3.在GITHUB上下载一个zendframework模板,插入到IDE中 4.将下载的zend framework2文件夹解压放在vendor文件 ...
- 关于C/S模式开发的学习笔记
当今的现状,感觉是B/S大为盛行,C/S的学习者很少,就那我们学校来看,三年多来,教的.用的最多的都是B/S,在刚刚确定下来的毕设课题中,大约四分之三都是web结合安卓开发的系统.C/S的学习着很少, ...
- Django web 进阶
.路由系统 .模板引擎 simple_tag .Form .Ajax请求 -简单数据 -复杂数据 内容: -作业 model xss.csrf(安全方面的内容) 分页(公共的模块) 内容复习和今日内容 ...
- 关于Linux:chmod和chown知识
将vendor下的root权限递归更改为user命令:sudo chown -R user:user fujitsu 指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [- ...
- ASP.NET泛型List的各种用法Skip、Take等
List在.NET里面使用得非常频繁,但有好多人不了解它各种小用法.我就一直记不大住... asp.net中List的简单用法,例如: 1 2 3 4 5 6 7 List<int> li ...
- HTML5新增标签(新增27个标签,废弃16个标签)
1>结构性标签:负责web上下文结构的定义 article:文章主题内容 header:标记头部区域内容 footer:标记脚部区域内容 section:区域章节表述 nav:菜单导航,链接导航 ...
- linux操作mysql数据库常用简单步骤
连接mysql数据库: 主要看mysql安装在哪一个目录下: mysql -h主机地址 -u用户名 -p用户密码 或者mysql -h ip地址 -u zaiai -p zaiai 或者/v ...
- macbook 重装win7
若是第一次已经成功好了,并且把第一次的安装U盘WININSTALL内容保存完好的前提下, win7要重新安装. 先进入Boot Camp移除Windows,备份好你的WIN系统的重要文件. 把第一次的 ...
- m.jd.com首页中的js效果
m.jd.com中的部分js效果 昨天把m.jd.com的首页布局写好了,今天写一下首页中部分js效果.头部背景色透明度的改变,焦点图轮播,京东快报的小轮播,以及秒杀倒计时.这里html,css样式就 ...