Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode usar uma propriedade MSBuild para transformar propriedades de projeto relacionadas ao pacote em atributos de assembly em um arquivo de código gerado. Além disso, você pode usar itens do MSBuild para adicionar atributos de assembly arbitrários ao arquivo gerado.
Usar propriedades de pacote como atributos de conjunto
A GenerateAssemblyInfo propriedade MSBuild controla a AssemblyInfo geração de atributos para um projeto. Quando o GenerateAssemblyInfo valor é true (que é o padrão), as propriedades do projeto relacionadas ao pacote são transformadas em atributos de assembly. A tabela a seguir lista as propriedades do projeto que geram os atributos. Ele também lista as propriedades que você pode usar para desabilitar essa geração por atributo, por exemplo:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
| Propriedade MSBuild | Atributo de Montagem | Propriedade para desativar a geração de atributos |
|---|---|---|
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 |
Notas sobre estas definições:
-
AssemblyVersioneFileVersiondefinem-se pelo valor de$(Version)sem o sufixo. Por exemplo, se$(Version)é1.2.3-beta.4, então o valor seria1.2.3. -
InformationalVersiontem, por defeito, o valor de$(Version). - Se a
$(SourceRevisionId)propriedade estiver presente, ela será anexada aoInformationalVersion. Você pode desativar esse comportamento usandoIncludeSourceRevisionInInformationalVersion. -
CopyrighteDescriptionpropriedades também são utilizadas para os metadados do NuGet. -
Configuration, cujo padrão éDebug, é compartilhado com todos os destinos do MSBuild. Você pode defini-lo através da--configurationopção dedotnetcomandos, por exemplo, dotnet pack. - Algumas das propriedades são usadas ao criar um pacote NuGet. Para obter mais informações, consulte Propriedades do pacote.
Definir atributos arbitrários
Também é possível adicionar seus próprios atributos de assembly ao arquivo gerado. Para fazer isso, defina <AssemblyAttribute> itens do MSBuild que informam ao SDK que tipo de atributo criar. Esses itens também devem incluir quaisquer parâmetros do construtor que são necessários para esse atributo. Por exemplo, o System.Reflection.AssemblyMetadataAttribute atributo tem um construtor que usa duas cadeias de caracteres:
- Um nome para descrever um valor arbitrário.
- O valor a armazenar.
Se você tinha uma Date propriedade no MSBuild que continha a data em que um assembly foi criado, você poderia usar AssemblyMetadataAttribute para incorporar essa data nos atributos de assembly usando o seguinte código 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>
Este item indica o SDK do .NET para emitir o seguinte C# (ou equivalente F# ou Visual Basic) como um atributo a nível de assembly.
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(A string de data real seria o que você forneceu durante a compilação.)
Se o atributo tiver tipos de parâmetros diferentes do System.String, você poderá especificar os parâmetros usando um padrão específico de elementos XML suportados pela tarefa MSBuild WriteCodeFragment . Consulte Tarefa WriteCodeFragment - Gerar atributos ao nível de montagem.
Migrar do .NET Framework
Se você migrar seu projeto do .NET Framework para o .NET 6 ou posterior, poderá encontrar um erro relacionado a arquivos de informações de assembly duplicados. Isso ocorre porque os modelos de projeto do .NET Framework criam um arquivo de código com atributos de informações de assembly definidos. O arquivo normalmente está localizado em .\Properties\AssemblyInfo.cs ou .\Properties\AssemblyInfo.vb. No entanto, projetos no estilo SDK também geram esse arquivo para você com base nas configurações do projeto.
Ao portar seu código para o .NET 6 ou posterior, siga um destes procedimentos:
- Desative a geração do arquivo de código temporário que contém os atributos assembly info definindo
GenerateAssemblyInfocomofalseno arquivo de projeto. Isso permite que você mantenha seu arquivo AssemblyInfo . - Migre as configurações no arquivo AssemblyInfo para o arquivo de projeto e, em seguida, exclua o arquivo AssemblyInfo .