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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM