.Net Standard TFM

Published Nov 8, 2019 | Updated Sep 17, 2022 | 0 comments

.Net Standard 참조 : https://docs.microsoft.com/en-us/dotnet/standard/net-standard

동일한 기능을 위한 Winform 과 WPF 프로젝트를 동시 개발하는 경우

공통된 기능을 별도 프로젝트로 분리하고자 최근 검색을 좀 해봤는데

.Net Standard 로 불리는…. 먼가(?)가 있더라

예전에는 동일한 소스파일 하나로 바로가기 형태로 공유를 하거나 Portable Library 를 사용했던거 같은데 지금은 저게 대세(?) 인가….

암튼 .Net Standard 를 사용하면서 일부 내용을 정리해보자

Target framework moniker (TFM) 참조 : Target frameworks in SDK-style projects – .NET | Microsoft Docs

프로젝트 파일을 편집해서 대상 플랫폼들을 추가합니다.

<Project Sdk="Microsoft.NET.Sdk">

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

  <!-- 조건부 컴파일 기호 재정의 -->
  <PropertyGroup Condition=" '$(TargetFramework)' == 'net40' ">
    <DefineConstants>NET40</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
    <DefineConstants>NETSTD20</DefineConstants>
  </PropertyGroup>

  <!-- 타 플랫폼 예시 -->
  <PropertyGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
    <DefineConstants>ANDROID</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS'))">
    <DefineConstants>IOS</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition="$(TargetFramework.StartsWith('uap'))">
    <DefineConstants>UWP</DefineConstants>
  </PropertyGroup>

  <!-- 추가로 참조된 어셈블리 -->
  <ItemGroup>
    <Reference Include="PresentationCore">
      <HintPath>..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\PresentationCore.dll</HintPath>
    </Reference>
    <Reference Include="System.Xaml">
      <HintPath>..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xaml.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

다음과 같이 소스 코드에서 컴파일 시점에 분기 처리 합니다.

조건부 컴파일 기호를 재정의 해서 글자 수를 줄이고 코드에서는 다음과 같이 사용한다. 얼마나 길다고…. 할 수 있지만 재정의가 가능 하다는게 중요하네

#if NET40
        private string Test = "";
#elif NETSTD20
        private string Test = "";
#else

#endif

Learn more on this topic

Related Blog Posts

Join in the conversation

Leave a Comment

0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

무료 온라인 전광판

전광판

텍스트를 입력하고 텍스트 효과 및 배경효과 를 변경해서 전체화면으로 표시할 수 있는 전광판 용도로 사용하실 수 있습니다. 각종 스포츠 및 공연 관람시 응원 용도로 사용이 가능합니다.

Carousel

여러개의 슬라이드를 추가하여 프레젠테이션 및 이미지 슬라이드 용도로 사용하실 수 있습니다. 브라우저가 포함된 IT 기기로 큰 모니터에 연결하여 매장 내 공지사항 및 메뉴소개를 이미지로 표시할 수 있습니다.

Pin It on Pinterest

Shares
Share This

Share This

Share this post with your friends!

Shares