MSBuild 속성을 사용하여 패키지 관련 프로젝트 속성을 생성된 코드 파일의 어셈블리 특성으로 변환할 수 있습니다. 또한 MSBuild 항목을 사용하여 생성된 파일에 임의의 어셈블리 특성을 추가할 수 있습니다.
어셈블리 특성으로 패키지 속성 사용
MSBuild 속성은GenerateAssemblyInfo
프로젝트의 특성 생성을 제어 AssemblyInfo
합니다. 값이 GenerateAssemblyInfo
기본값이 true
면 패키지 관련 프로젝트 속성 이 어셈블리 특성으로 변환됩니다. 다음 표에서는 특성을 생성하는 프로젝트 속성을 나열합니다. 또한 특성별로 해당 생성을 사용하지 않도록 설정하는 데 사용할 수 있는 속성도 나열합니다. 예를 들면 다음과 같습니다.
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild 속성 | 어셈블리 특성 | 특성 생성을 사용하지 않도록 설정하는 속성 |
---|---|---|
Company |
AssemblyCompanyAttribute | GenerateAssemblyCompanyAttribute |
Configuration |
AssemblyConfigurationAttribute | GenerateAssemblyConfigurationAttribute |
Copyright |
AssemblyCopyrightAttribute | GenerateAssemblyCopyrightAttribute |
Description |
AssemblyDescriptionAttribute | GenerateAssemblyDescriptionAttribute |
FileVersion |
AssemblyFileVersionAttribute | GenerateAssemblyFileVersionAttribute |
InformationalVersion |
AssemblyInformationalVersionAttribute | GenerateAssemblyInformationalVersionAttribute |
Product |
AssemblyProductAttribute | GenerateAssemblyProductAttribute |
AssemblyTitle |
AssemblyTitleAttribute | GenerateAssemblyTitleAttribute |
AssemblyVersion |
AssemblyVersionAttribute | GenerateAssemblyVersionAttribute |
NeutralLanguage |
NeutralResourcesLanguageAttribute | GenerateNeutralResourcesLanguageAttribute |
이러한 설정에 대한 참고 사항:
-
AssemblyVersion
및FileVersion
기본값은 접미사가 없는 값$(Version)
입니다. 예를 들어 이 경우$(Version)
1.2.3-beta.4
값은 다음과 같습니다1.2.3
. -
InformationalVersion
의 기본값은$(Version)
의 값으로 설정됩니다. - 속성이
$(SourceRevisionId)
에 있으면InformationalVersion
에 추가됩니다.IncludeSourceRevisionInInformationalVersion
를 사용하여 이 동작을 사용하지 않도록 설정할 수 있습니다. -
Copyright
및Description
속성은 NuGet 메타데이터에도 사용됩니다. -
Configuration
, 이는 기본적으로Debug
으로 설정되며, 모든 MSBuild 대상과 공유됩니다.--configuration
명령의dotnet
옵션을 통해 설정할 수 있습니다(예: dotnet pack). - 일부 속성은 NuGet 패키지를 만들 때 사용됩니다. 자세한 내용은 패키지 속성을 참조하세요.
임의의 특성 설정
생성된 파일에도 고유한 어셈블리 특성을 추가할 수 있습니다. 이렇게 하려면 SDK에 만들 특성의 유형을 알려주는 MSBuild 항목을 정의 <AssemblyAttribute>
합니다. 이러한 항목에는 해당 특성에 필요한 생성자 매개 변수도 포함되어야 합니다. 예를 들어, System.Reflection.AssemblyMetadataAttribute 특성에는 두 개의 문자열을 사용하는 생성자가 있습니다.
- 임의 값을 설명하는 이름입니다.
- 저장할 값입니다.
MSBuild에 어셈블리가 만들어진 날짜가 포함된 속성이 있는 경우 Date
다음 MSBuild 코드를 사용하여 해당 날짜를 어셈블리 특성에 포함하는 데 사용할 AssemblyMetadataAttribute
수 있습니다.
<ItemGroup>
<!-- Include must be the fully qualified .NET type name of the Attribute to create. -->
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<!-- _Parameter1, _Parameter2, etc. correspond to the
matching parameter of a constructor of that .NET attribute type -->
<_Parameter1>BuildDate</_Parameter1>
<_Parameter2>$(Date)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
이 항목은 .NET SDK에 다음 C#(또는 동등한 F# 또는 Visual Basic)을 어셈블리 수준 특성으로 내보내도록 지시합니다.
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(실제 날짜 문자열은 빌드 시 제공한 문자열입니다.)
특성에 매개 변수 형식이 System.String
가 아닌 경우, MSBuild WriteCodeFragment
작업에서 지원하는 특정 XML 요소 패턴을 사용하여 매개 변수를 지정할 수 있습니다.
WriteCodeFragment 작업 - 어셈블리 수준 특성 생성을 참조하세요.
.NET Framework에서 마이그레이션
.NET Framework 프로젝트를 .NET 6 이상으로 마이그레이션하는 경우 중복 어셈블리 정보 파일과 관련된 오류가 발생할 수 있습니다. .NET Framework 프로젝트 템플릿이 어셈블리 정보 특성이 설정된 코드 파일을 만들기 때문입니다. 파일은 일반적으로 .\Properties\AssemblyInfo.cs 또는 .\Properties\AssemblyInfo.vb 있습니다. 그러나 SDK 스타일 프로젝트는 프로젝트 설정에 따라 이 파일을 생성 합니다.
코드를 .NET 6 이상으로 포팅할 때 다음 중 하나를 수행합니다.
- 프로젝트 파일에서
GenerateAssemblyInfo
를false
로 설정하여 어셈블리 정보 특성이 포함된 임시 코드 파일의 생성을 비활성화합니다. 이렇게 하면 AssemblyInfo 파일을 유지할 수 있습니다. - AssemblyInfo 파일의 설정을 프로젝트 파일로 마이그레이션한 다음 AssemblyInfo 파일을 삭제합니다.
.NET