Подтвердить что ты не робот

Дублирующий атрибут AssemblyVersion

У меня есть проект, который генерирует следующую ошибку при компиляции:

ошибка CS0579: Дублировать атрибут AssemblyVersion

Я проверил файл AssemblyInfo.cs, и похоже, что дублирования там нет.

Я нашел эту статью в MSDN, в которой рассматривается аналогичная проблема, и в соответствии с предложением этой статьи исправлена ​​проблема.

Может ли кто-нибудь сказать мне, что здесь происходит? Это происходит только в случае наличия двух или более проектов с классами с похожими именами? Или это что-то еще?

4b9b3361

Ответ 1

Так как я также сталкивался с этой проблемой в прошлом, поэтому я собираюсь предположить, что ваш процесс сборки также предоставляет сборку отдельно для обеспечения управления версиями. И это вызывает дублирование, так как ваш проект также имеет эту информацию в файле AssembleyInfo.cs. Поэтому удалите файл, и я думаю, что он должен работать.

Ответ 2

Начиная с Visual Studio 2017 другое решение продолжать использовать файл AssemblyInfo.cs - отключить автоматическое создание информации сборки следующим образом:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

Я лично считаю его очень полезным для проектов, которые должны поддерживать как .NET Framework, так и .NET Standard.

Ответ 3

У меня была та же ошибка, и она подчеркивала версию Assembly Vesrion и Assembly File, поэтому, прочитав ответ Luqi, я просто добавил их в качестве комментариев, и ошибка была устранена

// 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")]

Ответ 4

При преобразовании старого проекта в .NET Core большая часть информации, которая была в AssemblyInfo.cs, теперь может быть установлена для самого проекта. Откройте свойства проекта и выберите вкладку "Пакет", чтобы увидеть новые настройки.

Пост Эрика Л. Андерсона "Дублировать" атрибут System.Reflection.AssemblyCompanyAttribute " описывает 3 варианта:

Ответ 5

В моем случае некоторые временные файлы *.cs, созданные во время компиляции, случайно добавились в проект.

Файлы были из каталога obj\Debug, поэтому их определенно не нужно было добавлять в решение. Подстановочный знак *.cs немного пошатнулся и добавил их неправильно.

Удаление этих файлов устраняет проблему.

Ответ 6

Для меня это было то, что AssembyInfo.cs и SolutionInfo.cs имели разные значения. Поэтому проверьте эти файлы. Я просто удалил версию из одного из них.

Ответ 7

Моя ошибка произошла из-за того, что в моей папке контроллеров была создана папка obj. Просто выполните поиск в своем приложении для строки внутри Assemblyinfo.cs. Где-то может быть дубликат.

Ответ 8

В моем случае там, где вложенная папка в проекте, которая была папкой проекта, сама:

  • файловая система:

    • C:\Проекты\WebAPI\wepapi.csproj
    • C:\Проекты\WebAPI\тесты\wepapitests.csproj
  • решение

    • webapi (папка и проект)
      • тесты (папка)
    • тесты (папка и проект)

Затем мне пришлось удалить подпапку "тесты" из проекта "webapi".

Ответ 9

Обычно это происходит для меня, если я скомпилировал проект в Visual Studio 2017, а затем попытался пересобрать и запустить его с .NET Core с помощью командной строки "dotnet run".

Простое удаление всех папок "bin" и "obj" - как внутри "ClientApp", так и непосредственно в папке проекта - позволило команде .NET Core "dotnet run" успешно перестроить и запустить.

Ответ 11

Я сталкивался с тем же, когда пытался добавить инструмент GitVersion, чтобы обновить мою версию в AssemblyInfo.cs. Используйте VS2017 и .NET Core проект. Так что я просто смешал оба мира. Мой AssemblyInfo.cs содержит только информацию о версии, которая была сгенерирована инструментом GitVersion, а мой csproj содержит оставшиеся данные. Обратите внимание, что я не использую <GenerateAssemblyInfo>false</GenerateAssemblyInfo> Я использую атрибуты, относящиеся только к версии (см. Ниже). Подробнее здесь свойства AssemblyInfo.

AssemblyInfo.cs

[assembly: AssemblyVersion("0.2.1.0")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: AssemblyInformationalVersion("0.2.1+13.Branch.master.Sha.119c35af0f529e92e0f75a5e6d8373912d457818")]

my.csproj содержит все, что связано с другими атрибутами Assemblyu:

<PropertyGroup>
...
<Company>SOME Company </Company>
<Authors>Some Authors</Authors>
<Product>SOME Product</Product>
...
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute><GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>

csproj maps to package tab at project properties

Ответ 12

Моя ошибка заключалась в том, что я также ссылался на другой файл в моем проекте, который также содержал значение для атрибута "AssemblyVersion". Я удалил этот атрибут из одного из файлов, и теперь он работает правильно.

Ключ должен удостовериться, что это значение не объявляется более одного раза в любом файле в вашем проекте.

Ответ 13

Еще одно решение при обновлении ядра до VS2017 - удалить их в файле properties\assemblyinfo.cs.

Так как они теперь хранятся в проекте.

Ответ 14

Отредактируйте свои AssemblyInfo.cs и #if! NETCOREAPP3_0... #endif

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.

#if !NETCOREAPP3_0  

[assembly: AssemblyTitle(".Net Core Testing")]
[assembly: AssemblyDescription(".Net Core")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct(".Net Core")]
[assembly: AssemblyCopyright("Copyright ©")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("000b119c-2445-4977-8604-d7a736003d34")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

#endif

Ответ 15

Я получил эту ошибку, когда я поместил 2 проекта в один каталог. Если у меня есть каталог с решением, и я помещаю отдельный каталог Web и Data, он компилируется правильно.