C# 프로젝트 설정 파일에 들어가는 옵션 중 하나로 해당 옵션이 true가 된다면 변경 사항이 없을 경우 새로 컴파일러를 통해 빌드를 할 경우에도 기존에 생성된 어셈블리와 동일한 파일이 생성되는 옵션이다.
<Deterministic> 옵션을 사용하여 결정적 어셈블리를 생성하고, 입력이 동일하게 유지되는 한 해당 이진 콘텐츠가 컴파일 간에 동일합니다.
다음과 같은 설명으로 마이크로 소프트 공식 설명에 기제되어 있으며 해당 결정적 옵션을 사용하지 않을 경우 타임스탬프 및 MVID 필드를 사용하여 어셈블리를 생성하기 때문에 수정이 없는 파일을 다시 빌드하여 생성할 경우 기존 파일과 다른 이진 콘텐츠가 생성된다.
<Deterministic>true</Deterministic>
옵션 태그는 다음과 같이 적용하면 되며 프로젝트 설정 파일에는 다음과 같이 적용되면 된다.
PropertyGroup 태그 마지막 부분을 확인하면 해당 결과물의 적용을 알 수 있다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- 빌드시 출력물-->
<OutputType>WinExe</OutputType>
<!-- .net 버전 설정-->
<TargetFramework>net8.0-windows</TargetFramework>
<!-- null 허용 경고 여부 -->
<Nullable>enable</Nullable>
<!--암시적 global using 지시문을 사용 및 사용하지 않도록 설정-->
<ImplicitUsings>enable</ImplicitUsings>
<!-- WPF 사용 설정-->
<UseWPF>true</UseWPF>
<!--결정적 어셈블리를 생성내용 변경이 없는 한 이진 콘텐츠가 동일하게 유지된다. -->
<Deterministic>true</Deterministic>
</PropertyGroup>
</Project>
참고 사이트
C# 컴파일러 옵션 - 코드 생성 옵션 - C#
코드 생성을 제어하는 C# 컴파일러 옵션입니다. 옵션은 지정된 컴파일에 대해 컴파일러가 생성한 코드에 영향을 줍니다.
learn.microsoft.com
'c# > helper' 카테고리의 다른 글
| c# ProduceReferenceAssembly 참조 어셈블리 생성 여부 (0) | 2024.04.25 |
|---|---|
| c# PackageOutputPath Nuget 패키지 경로 설정 (0) | 2024.04.23 |
| c# AppendRuntimeIdentifierToOutputPath 옵션 (0) | 2024.04.23 |
| c# AppendTargetFrameworkToOutputPath 옵션 (0) | 2024.04.23 |
| c# BaseOutputPath 빌드 후 출력 경로 설정 (0) | 2024.04.23 |