F# 애플리케이션 만들기

완료됨

이 시점에서는 REPL을 사용하고 fsx 스크립트 파일까지 만들었을 수도 있습니다. 이제 애플리케이션이 증가한 지점이 되었으므로 애플리케이션을 패키지하고 배포하는 기능 뿐만 아니라 더 많은 파일을 포함해야 합니다. 이를 위해서는 프로젝트를 만들어야 합니다. .NET SDK를 통해 모든 유형의 애플리케이션 빌드를 시작하는 데 도움이 되는 다양한 프로젝트 템플릿을 사용할 수 있습니다.

.NET 템플릿은 무엇인가요?

.NET SDK를 설치하면 다음을 포함하여 프로젝트 및 파일을 만들기 위한 12개 이상의 기본 제공 템플릿을 받습니다.

  • 콘솔 응용 프로그램
  • 클래스 라이브러리
  • 단위 테스트 프로젝트
  • ASP.NET Core 웹앱
  • 구성 파일

F#에는 테스트 및 웹에서 클래스 라이브러리에 이르는 다양한 템플릿이 지원됩니다. 지원되는 프로젝트의 전체 목록은 콘솔에서 dotnet new -l실행합니다.

템플릿을 사용하여 애플리케이션 만들기

새 애플리케이션을 만들려면 dotnet new .NET CLI 명령을 사용합니다. 예를 들어 F# 콘솔 애플리케이션을 만들려면 다음 명령을 사용합니다.

dotnet new console --language F# -o MyFSharpApp

일부 셸은 #을 특수 문자로 해석합니다. 이 경우에는 언어를 dotnet new console --language "F#" -o MyFSharpApp와 같이 따옴표로 묶습니다.

dotnet new console 명령은 기본 제공 콘솔 .NET 템플릿을 사용하여 새 콘솔 애플리케이션을 스캐폴드합니다.

몇 초 후에 F# 애플리케이션에 대한 코드가 포함된 MyFSharpApp이라는 디렉터리가 표시됩니다.

프로젝트 구조

MyFSharpApp 디렉터리에는 다음 두 개의 파일이 있습니다.

  • Program.fs - 애플리케이션의 진입점입니다.
  • MyFSharpApp.fsproj - 빌드 정보 및 지침을 포함한 MSBuild 프로젝트 파일입니다. MSBuild는 빌드 플랫폼이 소프트웨어를 처리하고 빌드하는 방법을 컨트롤하는 프로젝트 파일에 대한 XML 스키마를 제공하는 애플리케이션을 빌드하기 위한 플랫폼입니다.

Program.fs 파일에는 다음 코드가 포함되어 있습니다.

// Learn more about F# at https://learn.microsoft.com/dotnet/fsharp

open System

// Define a function to construct a message to print
let from whom =
    sprintf "from %s" whom

[<EntryPoint>]
let main argv =
    let message = from "F#" // Call the function
    printfn "Hello world %s" message
    0 // return an integer exit code

이 애플리케이션은 키워드를 open통해 가져오는 클래스 라이브러리System를 사용합니다.

from 함수는 whom 문자열 매개 변수를 사용하여 문자열 메시지를 만들고 서식을 지정합니다.

main 함수는 애플리케이션의 진입점입니다. from 함수를 사용하여 "from F#" 메시지를 만들고 값을 message에 바인딩합니다. 그런 다음 printfn 함수를 사용하여 "F#에서 헬로 월드"를 콘솔에 출력합니다.

애플리케이션 빌드

이제 콘솔 애플리케이션을 만들었으므로 dotnet build 명령을 사용하여 빌드할 차례입니다. dotnet build 명령은 이진 파일 집합으로 프로젝트와 해당 종속성을 빌드합니다. 이진 파일에는 확장명이 .dll인 IL(중간 언어) 파일의 프로젝트 코드가 포함됩니다. 프로젝트 형식 및 설정에 따라 다음과 같은 다른 파일이 포함될 수도 있습니다.

  • 프로젝트 형식이 .NET Core 3.0 이상을 대상으로 하는 실행 파일인 경우 애플리케이션을 실행하는 데 사용할 수 있는 실행 파일
  • 확장명이 .pdb인 디버깅에 사용되는 기호 파일
  • 애플리케이션 또는 라이브러리의 종속성을 나열하는 .deps.json 파일
  • 애플리케이션의 공유 런타임 및 해당 버전을 지정하는 .runtimeconfig.json 파일
  • 프로젝트 참조 또는 NuGet 패키지 참조를 통해 프로젝트가 종속된 다른 라이브러리

출력 파일은 기본 위치인 bin/<configuration>/<target>에 기록됩니다. 디버그가 기본 구성이지만 --configuration 옵션을 사용하여 재정의할 수 있습니다. 대상은 fsproj 파일의 TargetFramework 속성에 지정된 대상 프레임워크를 참조합니다. 대상 프레임워크는 앱이나 라이브러리에서 사용 가능하게 하려는 API 집합을 지정합니다. 예를 들어 .NET 5 애플리케이션이 있고 dotnet build을(를) 실행하는 경우 출력은 bin/Debug/net5.0에 배치됩니다.

애플리케이션 실행

실행 가능한 애플리케이션의 경우, dotnet run 명령을 통해 편리하게 애플리케이션을 실행할 수 있습니다. dotnet run 명령은 출력 디렉터리에서 .dll 또는 실행 파일을 찾고 dotnet 드라이버를 사용하여 애플리케이션의 진입점(Program.fs)에 정의된 대로 코드를 실행합니다.

dotnet run 명령을 사용하면 dotnet build 또한 자동으로 실행됩니다. 따라서 애플리케이션을 명시적으로 빌드하는 단계를 직접 줄일 수 있습니다.