0Pricing
C# Academy · 강의

다중 대상 지정

단일 프로젝트에서 여러 대상 프레임워크용 라이브러리를 빌드하고, API 차이에 대응하기 위해 조건부 컴파일과 대체 심을 사용합니다.

다중 대상 지정은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

개념 및 이점

목표: 여러 플랫폼에서 작동하는 하나의 패키지를 배포합니다.

  • 하나의 프로젝트에서 여러 이진 파일을 생성합니다
  • 사용자는 가장 적합한 어셈블리를 자동으로 받습니다
  • API가 다를 때 작은 #if 보호 구문을 사용합니다

자산 선택 기초

  • 패키지에는 대상별 폴더가 포함됩니다(예: lib/net45, lib/netstandard2.0)
  • NuGet은 호환되는 가장 가까운 자산을 선택합니다
  • 공개 인터페이스는 일관되게 유지하고, 내부 코드만 다르게 작성하세요

조건부 컴파일 데모

작은 #if 블록을 사용하여 구현을 달리하세요. 공개 메서드 시그니처는 동일하게 유지하세요.

#define NET45   // simulate building for different targets
// #define NETSTANDARD2_0

using System;

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Target: " + TargetName());
  }

  // Public API: stays the same across targets
  public static string TargetName()
  {
#if NET45
    return "net45 build";
#elif NETSTANDARD2_0
    return "netstandard2.0 build";
#else
    return "unknown target";
#endif
  }
}

안정적인 인터페이스와 내부 보조 코드

동일한 공개 인터페이스를 유지하고, 작은 보조 코드 뒤에 차이점을 숨겨 호출자가 어떤 대상을 사용하는지 신경 쓰지 않도록 하세요.

#define NET45

using System;
using System.IO;

public class Program
{
  // Public API is stable; internal implementation differs.
  public static string ReadAllTextCompat(string path)
  {
#if NET45
    // net45 has File.ReadAllText; use it directly.
    return File.ReadAllText(path);
#else
    // Example shim path (for an older TF that lacks some helper API)
    using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
    using (var sr = new StreamReader(fs))
    {
      return sr.ReadToEnd();
    }
#endif
  }

  public static void Main(string[] args)
  {
    // For demo, write then read
    string p = "demo.txt";
    File.WriteAllText(p, "hello");
    Console.WriteLine(ReadAllTextCompat(p));
  }
}

설정 팁

  • 프로젝트에서 TargetFrameworks(복수형)를 사용하여 대상을 나열하세요
  • #if는 작은 도우미에만 사용하고 대부분의 코드는 공유하세요
  • 각 대상을 테스트하고 대상별로 단위 테스트를 실행하세요
  • 모든 대상 자산을 포함한 하나의 패키지를 게시하세요

일반적인 문제

  • 대상별로 서로 다른 공개 인터페이스를 노출하지 마세요
  • 깊게 중첩된 #if를 피하고 작은 보조 코드를 사용하세요
  • 암시적인 동작 차이(경로, 인코딩 등)를 주의하세요
  • 대상별 제한 사항은 문서화하세요

다중 대상 지정이 필요한 이유

빠른 확인: 라이브러리에 여러 대상을 지정할 때 얻는 가장 큰 이점은 무엇인가요?

복습

복습: 다중 대상 지정은 하나의 프로젝트에서 여러 이진 파일을 배포할 수 있게 합니다. 공개 인터페이스를 일관되게 유지하고, 작은 #if 보조 코드 뒤에 차이점을 숨긴 다음 모든 대상을 함께 패키징하세요.

자주 묻는 질문

“다중 대상 지정” 강의는 무료인가요?

네 — “다중 대상 지정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“다중 대상 지정”에서 뭘 배우나요?

단일 프로젝트에서 여러 대상 프레임워크용 라이브러리를 빌드하고, API 차이에 대응하기 위해 조건부 컴파일과 대체 심을 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.

“다중 대상 지정” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 라이브러리와 앱 .csproj, 의미 체계 버전 관리
  2. NuGet 패키징과 게시
  3. 다중 대상 지정
← C# Academy(으)로 돌아가기