Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Свойство MSBuild можно использовать для преобразования свойств проекта, связанных с пакетом , в атрибуты сборки в созданном файле кода. Кроме того, можно использовать элементы MSBuild для добавления произвольных атрибутов сборки в созданный файл.
Использование свойств пакета в качестве атрибутов сборки
Свойство GenerateAssemblyInfo
MSBuild управляет 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. Дополнительные сведения см. в разделе "Свойства пакета".
Установка произвольных атрибутов
Кроме того, можно добавить собственные атрибуты сборки в созданный файл. Для этого определите <AssemblyAttribute>
элементы MSBuild, указывающие пакету SDK, какой тип атрибута необходимо создать. Эти элементы также должны включать все параметры конструктора, необходимые для этого атрибута. Например, System.Reflection.AssemblyMetadataAttribute атрибут имеет конструктор, который принимает две строки:
- Имя, описывающее произвольное значение.
- Значение для хранения.
Если у вас есть Date
свойство в MSBuild, содержащее дату создания сборки, можно использовать AssemblyMetadataAttribute
для внедрения этой даты в атрибуты сборки с помощью следующего кода MSBuild:
<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>
Этот элемент сообщает пакету SDK для .NET, чтобы вывести следующий C# (или эквивалент F# или Visual Basic) в качестве атрибута уровня сборки:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(Фактическая строка даты будет такой, какую вы указали во время сборки.)
Если атрибут имеет типы параметров, отличные от System.String
, можно указать параметры с помощью определенного шаблона XML-элементов, поддерживаемых задачей MSBuild WriteCodeFragment
. См. задачу WriteCodeFragment — создание атрибутов уровня сборки.
Переход с .NET Framework
При переносе проекта .NET Framework в .NET 6 или более поздней версии может возникнуть ошибка, связанная с повторяющимися файлами сведений о сборке. Это связано с тем, что шаблоны проектов .NET Framework создают файл кода с набором атрибутов сведений о сборке. Файл обычно находится в папке .\Properties\AssemblyInfo.cs или .\Properties\AssemblyInfo.vb. Однако проекты в стиле SDK также создают этот файл на основе параметров проекта.
При переносе кода в .NET 6 или более поздней версии выполните одно из следующих действий:
- Отключите создание временного файла кода, содержащего атрибуты сведений о сборке, задав значение
GenerateAssemblyInfo
false
в файле проекта. Это позволяет сохранить файл AssemblyInfo . - Перенесите параметры в файле AssemblyInfo в файл проекта, а затем удалите файл AssemblyInfo .