F# 애플리케이션 만들기
이 시점에서 REPL(Read-Evaluate-Print-Loop)을 사용하고 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 템플릿을 사용하여 새 콘솔 애플리케이션을 스캐폴드합니다.
몇 초 후에 MyFSharpApp 이라는 디렉터리가 F# 애플리케이션에 대한 코드와 함께 표시됩니다.
프로젝트 구조
MyFSharpApp 디렉터리에는 두 개의 파일이 있습니다.
- Program.fs - 애플리케이션의 진입점입니다.
- MyFSharpApp.fsproj - 빌드 정보 및 지침이 포함된 MSBuild 프로젝트 파일입니다. MSBuild는 빌드 플랫폼이 소프트웨어를 처리하고 빌드하는 방법을 컨트롤하는 프로젝트 파일에 대한 XML 스키마를 제공하는 애플리케이션을 빌드하기 위한 플랫폼입니다.
비고
콘솔 템플릿이 최신 버전의 .NET으로 만들어졌다면, 기본적으로 함수를 호출하는 printfn 진입점이 있는 코드를 생성할 수 있습니다.
다음 예제에서 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
이 애플리케이션은 키워드를 System통해 가져오는 클래스 라이브러리open를 사용합니다.
from 함수는 whom 문자열 매개 변수를 사용하여 문자열 메시지를 만들고 서식을 지정합니다.
main 함수는 애플리케이션의 진입점입니다.
from 함수를 사용하여 "from F#" 메시지를 만들고 값을 message에 바인딩합니다. 그런 다음 printfn 함수를 사용하여 "F#에서 헬로 월드"를 콘솔에 출력합니다.
애플리케이션 빌드
이제 콘솔 애플리케이션이 만들어졌으므로 이제 명령을 사용하여 dotnet build 빌드해야 합니다.
dotnet build 명령은 이진 파일 집합으로 프로젝트와 해당 종속성을 빌드합니다. 이진 파일에는 .dll 확장이 있는 IL(Intermediate Language) 파일의 프로젝트 코드가 포함됩니다. 프로젝트 형식 및 설정에 따라 다음과 같은 다른 파일이 포함될 수도 있습니다.
- 프로젝트 형식이 .NET Core 3.0 이상을 대상으로 하는 실행 파일인 경우 애플리케이션을 실행하는 데 사용할 수 있는 실행 파일
- .pdb 확장자를 사용하여 디버깅하는 데 사용되는 기호 파일입니다.
- 애플리케이션 또는 라이브러리의 종속성을 나열하는 .deps.json 파일입니다.
- 애플리케이션에 대한 공유 런타임 및 해당 버전을 지정하는 .runtimeconfig.json 파일입니다.
- 프로젝트 참조 또는 NuGet 패키지 참조를 통해 프로젝트가 종속된 다른 라이브러리
출력 파일은 bin/configuration</><target>인 기본 위치에 기록됩니다. 디버그가 기본 구성이지만 --configuration 옵션을 사용하여 재정의할 수 있습니다. 대상은 TargetFramework 파일의 속성에 지정된 대상 프레임워크를 참조합니다. 대상 프레임워크는 앱이나 라이브러리에서 사용 가능하게 하려는 API 집합을 지정합니다. 예를 들어 .NET 5 애플리케이션이 있고 실행하는 dotnet build경우 출력은 bin/Debug/net5.0에 배치됩니다.
애플리케이션 실행
실행 가능한 애플리케이션의 경우, dotnet run 명령을 통해 편리하게 애플리케이션을 실행할 수 있습니다. 이 dotnet run 명령은 출력 디렉터리에서 .dll 또는 실행 파일을 찾고 드라이버를 사용하여 dotnet 애플리케이션의 진입점(Program.fs)에 정의된 대로 코드를 실행합니다.
팁
dotnet run 명령을 사용하면 dotnet build 또한 자동으로 실행됩니다. 따라서 애플리케이션을 명시적으로 빌드하는 단계를 직접 줄일 수 있습니다.