Noté que en los nuevos proyectos de .NET Core no se creó ningún archivo AssemblyInfo.cs . He visto que aún puede establecer atributos de ensamblaje como AssemblyVersion , etc.
¿Todavía hay razones válidas para usar un archivo AssemblyInfo.cs?
Puede crear absolutamente un archivo AssemblyInfo.cs y configurar su ensamblaje como lo hizo en el pasado. Por supuesto, dado que las propiedades se establecen mediante atributos de ensamblaje, no necesita usar AssemblyInfo pero puede elegir cualquier otro nombre de archivo o incluso uno existente.
Dicho esto, la razón por la que AssemblyInfo.cs ya no se incluye en las plantillas predeterminadas es que el nuevo tipo de proyecto de estilo SDK admite la configuración de esta información dentro del archivo de proyecto csproj .
Por lo tanto, el enfoque habitual para establecer la versión de su ensamblaje sería establecer la propiedad Version dentro de su archivo de proyecto (o hacer que se establezca automáticamente como parte de su proceso de compilación). Por ejemplo:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> <Version>1.2.3</Version> </PropertyGroup> … </Project> Como se trata de una propiedad de MSBuild, también puede configurarla durante el proceso de compilación, por ejemplo, con dotnet build /p:Version=1.2.3 .
También existen las propiedades VersionPrefix y VersionSuffix que se pueden usar para construir automáticamente números de versión del entorno (por ejemplo, ID de confirmación de Git o números de compilación).
Además de las propiedades relacionadas con la versión, también hay algunas propiedades NuGet más que puede establecer en el archivo del proyecto, lo que hace que AssemblyInfo.cs sea en su mayoría redundante.
Las razones para seguir usando un archivo AssemblyInfo.cs pueden incluir
[AssembyAttributes] a partir de elementos Xml con nombres coincidentes en el archivo csproj , pero no admite la generación automática de [AssembyAttributes] arbitrarios u otros metadatos para su ensamblaje.De acuerdo con la guía de migración , en estos días, tenemos pocas formas flexibles de configurar atributos de ensamblaje.
using System; using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("...")] [assembly: System.Reflection.AssemblyCopyrightAttribute("...")] [assembly: System.Reflection.AssemblyDescriptionAttribute("...")] [assembly: System.Reflection.AssemblyFileVersionAttribute("...")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("...")] [assembly: System.Reflection.AssemblyProductAttribute("...")] [assembly: System.Reflection.AssemblyTitleAttribute("...")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0-dev01234567")]your.csproj o pasarse a través de argumentos de línea de comando como /property:Version=1.0.0-dev01234567 ). <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <Company>...</Company> <Copyright>...</Copyright> <Description>...</Description> <Product>...</Product> <AssemblyTitle>...</AssemblyTitle> <Version>1.0.0-dev01234567</Version> </PropertyGroup> ... </Project>Nota: puede fusionar ambas soluciones, pero evite los duplicados de atributos de ensamblaje.