Atributo Duplicado de versión de ensamblaje
Tengo un proyecto que genera el siguiente error al compilar:
error CS0579: atributo 'AssemblyVersion' duplicado
Revisé el archivo AssemblyInfo.cs
y parece que no hay duplicados allí.
Encontré este artículo en MSDN que aborda un problema similar y seguir la sugerencia de este artículo también soluciona el problema.
¿Alguien puede decirme qué está pasando aquí? ¿Ocurre sólo en caso de tener dos o más proyectos con clases con nombres similares? ¿O es otra cosa?
A partir de Visual Studio 2017, otra solución para seguir usando el AssemblyInfo.cs
archivo es desactivar la generación automática de información de ensamblaje como esta:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>
Personalmente, lo encuentro muy útil para proyectos que necesitan ser compatibles con .NET Framework y .NET Standard.
También me encontré con este problema en el pasado, por lo que asumiré que su proceso de compilación proporciona información de ensamblaje por separado para proporcionar control de versiones. Y eso provoca una duplicación ya que su proyecto también tiene esa información en el AssemblyInfo.cs
archivo. Así que elimine el archivo y creo que debería funcionar.
En mi caso, había una subcarpeta en un proyecto que era una carpeta de proyecto en sí misma:
sistema de archivos:
- c:\proyectos\webapi\wepapi.csproj
- c:\proyectos\webapi\tests\wepapitests.csproj
solución
- webapi (carpeta y proyecto)
- pruebas (carpeta)
- webapi (carpeta y proyecto)
pruebas (carpeta y proyecto)
Luego tuve que eliminar la subcarpeta "pruebas" del proyecto "webapi".
EDITAR 2022: Para ser más claro, como @bobt mencionó en los comentarios, por "eliminar" quise decir: hacer clic derecho en la carpeta "pruebas" dentro de webapi y elegir la opción "excluir del proyecto".
Al convertir un proyecto anterior a .NET Core, la mayor parte de la información que estaba en AssemblyInfo.cs ahora se puede configurar en el proyecto mismo. Abra las propiedades del proyecto y seleccione la pestaña Paquete para ver la nueva configuración.
La publicación de Eric L. Anderson "Duplicar atributo 'System.Reflection.AssemblyCompanyAttribute'" describe 3 opciones:
- eliminar los elementos en conflicto del archivo AssemblyInfo.cs,
- eliminar completamente el archivo o
- deshabilite GenerateAssemblyInfo (como se sugiere en otra respuesta de Serge Semenov )
Tuve el mismo error y estaba subrayando la versión de ensamblaje y la versión del archivo de ensamblaje, así que al leer la respuesta de Luqi, simplemente los agregué como comentarios y el error se resolvió.
// AssemblyVersion is the CLR version. Change this only when making breaking changes
//[assembly: AssemblyVersion("3.1.*")]
// AssemblyFileVersion should ideally be changed with each build, and should help identify the origin of a build
//[assembly: AssemblyFileVersion("3.1.0.0")]