天下之事,必先处之难,而后易之。

ASP.NET Core Standard2.0同一项目多平台支持配置

为了实现Core项目-netstandard2.0与.NetFramework4.5同在一个项目里面依赖,配置需要对环境的目标框架进行修改,并且代码在不兼容的地方需要预编译平台判断处理。大致情况可以参考下面:

什么是.NET Standard

参考:https://github.com/dotnet/standard/blob/master/docs/versions.md

.NET Standard是一项API规范,每一个特定的版本,都定义了必须实现的基类库。

.NET Core是一个托管框架,针对构建控制台、云、ASP.NET Core和UWP应用程序进行了优化。每一种托管实现(如Xamarin、.NET Core或.NET Framework)都必须遵循.NET Standard实现BCL。

类库编辑项目设置

项目右键:

类库项目配置

修改前:

<Project Sdk="Microsoft.NET.Sdk"> 
  <PropertyGroup>  
    <TargetFramework>netstandard2.0</TargetFramework>
 </PropertyGroup>
</Project> 

 

修改后:

<PropertyGroup> 
  <TargetFrameworks>netstandard2.0;net45</TargetFrameworks> 
</PropertyGroup>

之后编辑类文件就可以看到两种平台的支持了:

依赖包配置

两种平台都支持:

 <!--通用平台配置满足netstandard2.0和net45-->
  <ItemGroup>
    <PackageReference Include="log4net" Version="2.0.8" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />   
  </ItemGroup>

指定平台依赖:

  <!--平台配置满足netstandard2.0-->
  <ItemGroup  Condition="'$(TargetFramework)' == 'netstandard2.0'">
    <PackageReference Include="System.Drawing.Common" Version="4.5.0" />
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.0" />
  </ItemGroup>

不同平台代码处理

配置平台变量:


  <PropertyGroup Condition="'$(TargetFramework)' =='net45' ">
    <DefineConstants>NET45</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)' =='netstandard2.0' ">
    <DefineConstants>NETSTANDARD20</DefineConstants>
  </PropertyGroup>

代码里面我们可以这样来判断:

#if NET45
        public int GetPlatform()
        {
            return "net45";
        }
#else  
        public int GetPlatform()
        {
            return "netstandard2.0";
        }  
#endif  

或:

#if NETSTANDARD20
        public int GetPlatform()
        {
            return "netstandard2.0";
        }
#else  
        public int GetPlatform()
        {
            return "net45";
        }  
#endif  

参考地址:http://www.mamicode.com/info-detail-2327644.html

注意:跨平台的项目一般是类库性质的,窗体应用或其他应用是可以根据平台来引用类库的,一个类库可能包含多个平台的代码, 也就是所谓的多平台支持项目。

posted @ 2024-01-05 09:36  boonya  阅读(43)  评论(0)    收藏  举报  来源
我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。