다음을 통해 공유


프로젝트 파일에서 어셈블리 특성 설정

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

이러한 설정에 대한 참고 사항:

  • AssemblyVersionFileVersion 기본값은 접미사가 없는 값 $(Version) 입니다. 예를 들어 이 경우 $(Version)1.2.3-beta.4값은 다음과 같습니다 1.2.3.
  • InformationalVersion의 기본값은 $(Version)의 값으로 설정됩니다.
  • 속성이 $(SourceRevisionId)에 있으면 InformationalVersion에 추가됩니다. IncludeSourceRevisionInInformationalVersion를 사용하여 이 동작을 사용하지 않도록 설정할 수 있습니다.
  • CopyrightDescription 속성은 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 이상으로 포팅할 때 다음 중 하나를 수행합니다.

  • 프로젝트 파일에서 GenerateAssemblyInfofalse로 설정하여 어셈블리 정보 특성이 포함된 임시 코드 파일의 생성을 비활성화합니다. 이렇게 하면 AssemblyInfo 파일을 유지할 수 있습니다.
  • AssemblyInfo 파일의 설정을 프로젝트 파일로 마이그레이션한 다음 AssemblyInfo 파일을 삭제합니다.