다음을 통해 공유


컴파일러 옵션

이 문서에서는 F# 컴파일러에 대한 컴파일러 명령줄 옵션에 대해 설명합니다. 이 명령은 dotnet build F# 프로젝트 파일에서 F# 컴파일러를 호출합니다. F# 프로젝트 파일은 확장으로 기록 .fsproj 됩니다.

컴파일 환경은 프로젝트 속성을 설정하여 제어할 수도 있습니다. .NET Core를 대상으로 하는 프로젝트의 경우 추가 명령줄 옵션을 지정하는 데 "기타 플래그" 속성 <OtherFlags>...</OtherFlags>.fsproj이 사용됩니다.

컴파일러 옵션 사전순 목록

다음 표에는 사전순으로 나열된 컴파일러 옵션이 나와 있습니다. 일부 F# 컴파일러 옵션은 C# 컴파일러 옵션과 유사합니다. 이 경우 C# 컴파일러 옵션 항목에 대한 링크가 제공됩니다.

컴파일러 옵션 설명
--allsigs 컴파일의 각 소스 파일에 대한 새 서명 파일을 생성하거나 기존 서명 파일을 다시 생성합니다. 서명 파일에 대한 자세한 내용은 서명을 참조 하세요.
-a filename.fs 지정된 파일에서 라이브러리를 생성합니다. 이 옵션은 간단한 형식입니다 --target:library filename.fs.
--baseaddress:address DLL을 로드할 기본 설정 기준 주소를 지정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /baseaddress(C# 컴파일러 옵션)를 참조하세요.
--codepage:id 필요한 페이지가 시스템의 현재 기본 코드 페이지가 아닌 경우 컴파일 중에 사용할 코드 페이지를 지정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /code 페이지(C# 컴파일러 옵션)를 참조하세요.
--consolecolors 오류 및 경고가 콘솔에서 색으로 구분된 텍스트를 사용하도록 지정합니다.
--crossoptimize[+ or -] 모듈 간 최적화를 사용하거나 사용하지 않도록 설정합니다.
--delaysign[+|-] 강력한 이름 키의 공용 부분만 사용하여 어셈블리에 지연 서명합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /delaysign(C# 컴파일러 옵션)을 참조하세요.
--checked[+|-] 오버플로 검사 생성을 사용하거나 사용하지 않도록 설정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /checked(C# 컴파일러 옵션)를 참조하세요.
--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]
디버그 정보 생성을 사용하거나 사용하지 않도록 설정하거나 생성할 디버그 정보의 유형을 지정합니다. 기본값은 full실행 중인 프로그램에 연결할 수 있도록 하는 것입니다. pdbonly pdb(프로그램 데이터베이스) 파일에 저장된 제한된 디버깅 정보를 가져옵니다.

동일한 이름의 C# 컴파일러 옵션에 해당합니다. 자세한 내용은 참조하세요.

/debug(C# 컴파일러 옵션).
--define:symbol

-d:symbol
조건부 컴파일에 사용할 기호를 정의합니다.
--deterministic[+|-] 결정적 어셈블리(모듈 버전 GUID 및 타임스탬프 포함)를 생성합니다. 이 옵션은 wild카드 버전 번호와 함께 사용할 수 없으며 포함 및 이식 가능한 디버깅 형식만 지원합니다.
--doc:xmldoc-filename 지정된 파일에 대한 XML 문서 주석을 생성하도록 컴파일러에 지시합니다. 자세한 내용은 XML Documentation을 참조하세요.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /doc(C# 컴파일러 옵션)를 참조하세요.
--fullpaths 컴파일러에 정규화된 경로를 생성하도록 지시합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /fullpaths(C# 컴파일러 옵션)를 참조하세요.
--help

-?
모든 컴파일러 옵션에 대한 간략한 설명을 포함하여 사용 정보를 표시합니다.
--highentropyva[+|-] 향상된 보안 기능인 ASLR(높은 엔트로피 주소 공간 레이아웃 임의화)을 사용하거나 사용하지 않도록 설정합니다. OS는 애플리케이션에 대한 인프라(예: 스택 및 힙)가 로드되는 메모리의 위치를 임의로 지정합니다. 이 옵션을 사용하도록 설정하면 운영 체제에서 이 임의화를 사용하여 64비트 컴퓨터에서 전체 64비트 주소 공간을 사용할 수 있습니다.
--keycontainer:key-container-name 강력한 이름의 키 컨테이너를 지정합니다.
--keyfile:filename 생성된 어셈블리에 서명하기 위한 공개 키 파일의 이름을 지정합니다.
--lib:folder-name

-I:folder-name
참조되는 어셈블리를 검색할 디렉터리를 지정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /lib(C# 컴파일러 옵션)를 참조하세요.
--linkresource:resource-info 지정된 리소스를 어셈블리에 연결합니다. 리소스 정보의 형식은 다음과 같습니다. filename[name[public|private]]

이 옵션을 사용하여 단일 리소스를 연결하는 것은 전체 리소스 파일을 옵션과 함께 포함하는 대안입니다 --resource .

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /linkresource(C# 컴파일러 옵션)를 참조하세요.
--mlcompatibility 다른 버전의 ML과의 호환성을 위해 설계된 기능을 사용할 때 나타나는 경고를 무시합니다.
--noframework .NET Framework 어셈블리에 대한 기본 참조를 사용하지 않도록 설정합니다.
--nointerfacedata F#특정 메타데이터를 포함하는 어셈블리에 일반적으로 추가되는 리소스를 생략하도록 컴파일러에 지시합니다.
--nologo 컴파일러를 시작할 때 배너 텍스트를 표시하지 않습니다.
--nooptimizationdata 인라인 구문을 구현하는 데 필수적인 최적화만 포함하도록 컴파일러에 지시합니다. 모듈 간 인라인을 억제하지만 이진 호환성을 향상시킵니다.
--nowin32manifest 컴파일러에 기본 Win32 매니페스트를 생략하도록 지시합니다.
--nowarn:warning-number-list 숫자로 나열된 특정 경고를 사용하지 않도록 설정합니다. 각 경고 번호를 쉼표로 구분합니다. 컴파일 출력에서 경고에 대한 경고 번호를 검색할 수 있습니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /nowarn(C# 컴파일러 옵션)을 참조하세요.
--optimize[+|-] [optimization-option-list]

-O[+|-] [optimization-option-list]
최적화를 사용하거나 사용하지 않도록 설정합니다. 일부 최적화 옵션은 나열하여 선택적으로 사용하지 않도록 설정하거나 사용하도록 설정할 수 있습니다. 다음과 같습니다. nojitoptimize, nojittracking, nolocaloptimize, nocrossoptimizenotailcalls.
--out:output-filename

-o:output-filename
컴파일된 어셈블리 또는 모듈의 이름을 지정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /out(C# 컴파일러 옵션)을 참조하세요.
--pathmap:path=sourcePath,... 실제 경로를 컴파일러에서 출력되는 소스 경로 이름에 매핑하는 방법을 지정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /pathmap(C# 컴파일러 옵션)을 참조하세요.
--pdb:pdb-filename 출력 디버그 PDB(프로그램 데이터베이스) 파일의 이름을 지정합니다. 이 옵션은 사용하도록 설정된 경우에만 적용됩니다 --debug .

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /pdb(C# 컴파일러 옵션)를 참조하세요.
--platform:platform-name 생성된 코드가 지정된 플랫폼(x86Itanium또는)에서만 실행되도록 지정하거나 x64플랫폼 이름을 anycpu 선택한 경우 생성된 코드가 모든 플랫폼에서 실행될 수 있도록 지정합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /platform(C# 컴파일러 옵션)을 참조하세요.
--preferreduilang:lang 기본 출력 언어 문화권 이름(예: es-ES, ja-JP)을 지정합니다.
--quotations-debug F# 따옴표 리터럴 및 반영된 정의에서 파생된 식에 대해 추가 디버깅 정보를 내보내야 되도록 지정합니다. 디버그 정보는 F# 식 트리 노드의 사용자 지정 특성에 추가됩니다. 코드 따옴표Expr.CustomAttributes를 참조하세요.
--reference:assembly-filename

-r:assembly-filename
F# 또는 .NET Framework 어셈블리의 코드를 컴파일되는 코드에서 사용할 수 있도록 합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /reference(C# 컴파일러 옵션)를 참조하세요.
--resource:resource-filename 관리되는 리소스 파일을 생성된 어셈블리에 포함합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /resource(C# 컴파일러 옵션)를 참조하세요.
--sig:signature-filename 생성된 어셈블리를 기반으로 서명 파일을 생성합니다. 서명 파일에 대한 자세한 내용은 서명을 참조 하세요.
--simpleresolution MSBuild 확인 대신 디렉터리 기반 Mono 규칙을 사용하여 어셈블리 참조를 확인되도록 지정합니다. 기본값은 Mono에서 실행되는 경우를 제외하고 MSBuild 해상도를 사용하는 것입니다.
--standalone F# 라이브러리와 같은 추가 어셈블리 없이 자체적으로 실행되도록 모든 종속성이 포함된 어셈블리를 생성하도록 지정합니다.
--staticlink:assembly-name 지정된 어셈블리와 이 어셈블리에 의존하는 모든 참조된 DLL을 정적으로 연결합니다. DLL 이름이 아닌 어셈블리 이름을 사용합니다.
--subsystemversion 생성된 실행 파일에서 사용할 OS 하위 시스템의 버전을 지정합니다. Windows 8.1의 경우 6.02, Windows 7의 경우 6.01, Windows Vista의 경우 6.00을 사용합니다. 이 옵션은 DLL이 아닌 실행 파일에만 적용되며 애플리케이션이 특정 버전의 OS에서만 사용할 수 있는 특정 보안 기능에 의존하는 경우에만 사용해야 합니다. 이 옵션을 사용하고 사용자가 더 낮은 버전의 OS에서 애플리케이션을 실행하려고 하면 오류 메시지와 함께 실패합니다.
--tailcalls[+|-] tail IL 명령을 사용하거나 사용하지 않도록 설정하여 스택 프레임이 비상 재귀 함수에 다시 사용되도록 합니다. 기본적으로 이 옵션은 사용하도록 설정됩니다.
--target:[exe|winexe|library|module] filename 생성된 컴파일된 코드의 형식 및 파일 이름을 지정합니다.
  • exe 는 콘솔 애플리케이션을 의미합니다.
  • winexe 는 표준 입력/출력 스트림(stdin, stdout 및 stderr)이 정의되어 있지 않다는 점에서 콘솔 애플리케이션과 다른 Windows 애플리케이션을 의미합니다.
  • library 는 진입점이 없는 어셈블리입니다.
  • module 는 나중에 다른 모듈과 어셈블리로 결합할 수 있는 .NET Framework 모듈(.netmodule)입니다.
    • 이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /target(C# 컴파일러 옵션)을 참조하세요.
--times 컴파일에 대한 타이밍 정보를 표시합니다.
--utf8output UTF-8 인코딩에서 컴파일러 출력을 인쇄할 수 있습니다.
--warn:warning-level 경고 수준(0에서 5)을 설정합니다. 기본 수준은 3입니다. 각 경고에는 심각도에 따라 수준이 지정됩니다. 수준 5는 수준 1보다 더 많지만 덜 심각한 경고를 제공합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /warn(C# 컴파일러 옵션)을 참조하세요.
--warnon:warning-number-list 기본적으로 꺼져 있거나 다른 명령줄 옵션에 의해 비활성화될 수 있는 특정 경고를 사용하도록 설정합니다. 목록은 쉼표로 구분되어 있습니다.
--warnaserror[+|-] [warning-number-list] 경고를 오류로 보고하는 옵션을 사용하거나 사용하지 않도록 설정합니다. 사용하지 않도록 설정하거나 사용하도록 설정할 특정 경고 번호를 제공할 수 있습니다. 명령줄의 뒷부분에 있는 옵션은 명령줄 앞부분에 있는 옵션을 재정의합니다. 예를 들어 오류로 보고하지 않으려는 경고를 지정하려면 다음을 지정합니다 --warnaserror+--warnaserror-:warning-number-list.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /warnaserror(C# 컴파일러 옵션)를 참조하세요.
--win32manifest:manifest-filename Win32 매니페스트 파일을 컴파일에 추가합니다. 이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /win32manifest(C# 컴파일러 옵션)을 참조하세요.
--win32res:resource-filename Win32 리소스 파일을 컴파일에 추가합니다.

이 컴파일러 옵션은 동일한 이름의 C# 컴파일러 옵션과 동일합니다. 자세한 내용은 /win32res((C#) 컴파일러 옵션)을 참조하세요.

옵트인 경고

F# 컴파일러는 다음과 같은 몇 가지 옵트인 경고를 지원합니다.

숫자 요약 수준 설명
21 런타임에 재귀 검사 5 런타임에 초기화 사운드를 위해 재귀 사용이 검사 경고합니다.
22 순서대로 실행된 바인딩 5 정방향 참조로 인해 재귀 바인딩이 순서대로 실행될 수 있는 경우 경고합니다.
52 구조체의 암시적 복사본 5 변경할 수 없는 구조체가 복사되면 경고하여 원래 구조체가 작업에 의해 변경되지 않도록 합니다.
1178 암시적 같음/비교 5 F# 형식 선언이 암시적으로 유추되거나 NoEqualityNoComparison 형식에 특성이 없는 경우 경고합니다.
1182 사용되지 않는 변수 해당 없음 사용하지 않는 변수에 대해 경고합니다.
3180 암시적 힙 할당 해당 없음 변경 가능한 로컬이 닫기에 의해 캡처되었기 때문에 참조 셀로 암시적으로 할당되는 경우 경고합니다.
3366 인덱스 표기법 해당 없음 F# 5 인덱스 표기법이 사용될 때 경고합니다 expr.[idx] .
3517 InlineIfLambda 오류 해당 없음 예를 들어 명시적 람다 대신 계산된 함수 값이 제공된 경우 F# 최적화 프로그램이 값을 인라인 InlineIfLambda 하지 못하는 경우 경고합니다.
3387 op_Implicit 변환 해당 없음 메서드 인수에서 .NET 암시적 변환이 사용되는 경우 경고합니다.
3388 추가 암시적 업캐스트 해당 없음 F# 6에 추가된 추가 업캐스트가 암시적으로 사용되는 경우 경고합니다.
3389 암시적 확대 해당 없음 암시적 숫자 확대를 사용하는 경우 경고합니다.
3390 잘못된 형식의 XML 문서 주석 해당 없음 XML 문서 주석의 형식이 여러 가지 방법으로 잘못되면 경고합니다.

관련 경고 번호를 사용하거나 <WarnOn>NNNN</WarnOn> 어디에 있는지 NNNN 를 사용하여 /warnon:NNNN 이러한 경고를 사용하도록 설정할 수 있습니다. (구문 <WarnOn>FSNNNN</WarnOn>(예: .)을 사용할 수도 있습니다. <WarnOn>FS3388</WarnOn> 속성이 WarnOn 여러 번 지정된 경우 마지막 항목만 사용됩니다. 여러 경고를 지정하려면 속성에 WarnOn 쉼표로 구분된 문자열을 해당 내용으로 한 번 제공합니다. <WarnOn>3388,3559</WarnOn>

제목 설명
F# Interactive 옵션 F# 인터프리터 fsi.exe 지원하는 명령줄 옵션에 대해 설명합니다.
프로젝트 속성 참조 빌드 옵션을 제공하는 프로젝트 속성 페이지를 포함하여 프로젝트의 UI에 대해 설명합니다.