Dado que dotnet core regresó al .csproj
formato, hay un nuevo autogenerado MyProject.AssemblyInfo.cs
que contiene entre otros.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Tenga en cuenta que esto se regenera automáticamente cada compilación. Anteriormente, el archivo se encontraba en el directorio / obj /, ahora parece estar solo en la memoria ya que el archivo no se puede encontrar en el disco y al hacer clic en el mensaje de error no se abre ningún archivo.
Como están definidos allí, no puedo definirlos yo mismo en el clásico AssemblyInfo.cs
.
¿Dónde / cómo puedo definir la Compañía y la Versión de un proyecto?
Respuestas:
Como ya has notado, puedes controlar la mayoría de estas configuraciones en .csproj.
Si prefiere mantenerlos en AssemblyInfo.cs, puede desactivar los atributos de ensamblaje generados automáticamente.
Si desea ver lo que sucede debajo del capó, consulte Microsoft.NET.GenerateAssemblyInfo.targets dentro de Microsoft.NET.Sdk.
fuente
Esa configuración se ha movido al archivo .csproj.
De forma predeterminada, no se muestran, pero puede descubrirlos desde Visual Studio 2017 en la
Package
pestaña de propiedades del proyecto .Una vez guardados, esos valores se pueden encontrar en
MyProject.csproj
En la pestaña de información de propiedades del explorador de archivos,
FileVersion
se muestra como "Versión del archivo" yVersion
se muestra como "Versión del producto"fuente
Class Library (.NET Standard)
. ¿Tienes alguna idea de por qué? Estoy usando la versión 15.1, versión 26403.7, edición comunitaria.Hago lo siguiente para mis proyectos .NET Standard 2.0.
Cree un
Directory.Build.props
archivo (por ejemplo, en la raíz de su repositorio) y mueva las propiedades que se compartirán del.csproj
archivo a este archivo.MSBuild lo recogerá automáticamente y los aplicará a los generados automáticamente
AssemblyInfo.cs
.También se aplican al paquete nuget al compilar uno con
dotnet pack
o a través de la interfaz de usuario en Visual Studio 2017.Ver https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
fuente
Siempre puede agregar su propio AssemblyInfo.cs , que es útil
InternalsVisibleToAttribute
,CLSCompliantAttribute
y otros que no se generan automáticamente.Agregar AssemblyInfo.cs a un proyecto
<project name> > Add > New Folder
.Add > New Item...
.Supresión de atributos autogenerados
Si desea mover sus atributos nuevamente a AssemblyInfo.cs en lugar de hacer que se generen automáticamente, puede suprimirlos en MSBuild como señaló natemcmaster en su respuesta .
fuente
Agregando a la respuesta de NightOwl888, puede ir un paso más allá y agregar una
AssemblyInfo
clase en lugar de solo una clase simple:fuente
Quiero extender este tema / respuestas con lo siguiente. Como alguien mencionó, este AssemblyInfo generado automáticamente puede ser un obstáculo para las herramientas externas. En mi caso, al usar FinalBuilder , tuve un problema que la información de construcción no estaba actualizando AssemblyInfo . Aparentemente, FinalBuilder se basa en el
~proj
archivo para encontrar la ubicación de AssemblyInfo . Pensé, estaba buscando en cualquier lugar debajo de la carpeta del proyecto. No. Entonces, cambiando estosolo realizó la mitad del trabajo, permitió información de ensamblaje personalizado si fue construido por VS IDE / MS Build. Pero necesitaba que FinalBuilder lo hiciera también sin manipulaciones manuales en el archivo de información de ensamblaje. Necesitaba satisfacer todos los programas, MSBuild / VS y FinalBuilder.
Resolví esto agregando una entrada a la existente
ItemGroup
Ahora, teniendo este elemento, FinalBuilder encuentra la ubicación de AssemblyInfo y modifica el archivo. Si bien la acción
None
permite que MSBuild / DevEnv ignore esta entrada y ya no informe un error basado en laCompile
acción que generalmente viene con la entrada de información de ensamblaje en losproj
archivos.fuente