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

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 /****** Care here namespace *************/
 6 namespace System.Runtime.CompilerServices
 7 {
 8     /// <summary>
 9     /// 为 .NET 2.0 定义一个扩展方法的支持标记类,在不引用升级 .NET 到 3.5 与引用.NET 3.5 程序集的情况下可以支持静态方法扩展
10     /// </summary>
11     [AttributeUsage( AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method )]
12     public sealed class ExtensionAttribute : Attribute
13     {
14     }
15 }
复制代码

 

 

第六步(0x06),写个控制台测试程序看看效果:

 

 

 

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

 

可以看到,实际上,添加的 链接 代码文件,是在 Compile 节点下加了一个 Link 节点链接到这个项目中的咯~

 

代码为方便自己继续学习,已经放到 github 上咯。

https://github.com/oceanho/OceanHo.MultiVerCompileTests

 

posted on   oceanho  阅读(6177)  评论(12编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示