Atsortingbut Duplicate AssemblyVersion

J’ai un projet qui génère l’erreur suivante sur la compilation:

erreur CS0579: atsortingbut ‘AssemblyVersion’ en double

J’ai vérifié le fichier AssemblyInfo.cs et il semble n’y avoir aucune duplication.

J’ai trouvé cet article sur MSDN qui résout un problème similaire et en suivant la suggestion de cet article corrige également le problème.

Quelqu’un peut-il me dire ce qui se passe ici? Est-ce que cela se produit uniquement dans le cas de deux projets ou plus avec des classes ayant des noms similaires? Ou s’agit-il d’autre chose?

Étant donné que j’ai également rencontré ce problème dans le passé, je vais donc supposer que votre processus de génération fournit également des informations d’assemblage séparément pour fournir des versions. Et cela provoque une duplication car votre projet a également ces informations dans le fichier AssembleyInfo.cs. Supprimez donc le fichier et je pense que cela devrait fonctionner.

À partir de Visual Studio 2017, une autre solution pour continuer à utiliser le fichier AssemblyInfo.cs consiste à désactiver la génération automatique des informations d’assemblage comme ceci:

   false   

Je trouve personnellement cela très utile pour les projets qui doivent prendre en charge à la fois .NET Framework et .NET Standard.

J’ai eu la même erreur et soussigné l’assembly Vesrion et la version de fichier d’assemblage alors en lisant la réponse de Luqi je les ai juste ajoutés en tant que commentaires et l’erreur a été résolue

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

Dans mon cas, certains fichiers * .cs temporaires générés lors de la compilation ont été ajoutés accidentellement au projet.

Les fichiers provenaient du répertoire obj\Debug , ils n’auraient donc pas dû être ajoutés à la solution. Un joker *.cs est devenu un peu fou et l’a ajouté de manière incorrecte.

La suppression de ces fichiers a résolu le problème.

Pour moi, AssembyInfo.cs et SolutionInfo.cs avaient des valeurs différentes. Alors, vérifiez également ces fichiers. Je viens de retirer la version de l’un d’entre eux.

Lors de la conversion d’un ancien projet en .NET Core, la plupart des informations contenues dans AssemblyInfo.cs peuvent désormais être définies sur le projet lui-même. Ouvrez les propriétés du projet et sélectionnez l’onglet Package pour afficher les nouveaux parameters.

Le post “Duplicate” System.Reflection.AssemblyCompanyAtsortingbute d’Eric L. Anderson décrit 3 options:

  • supprimer les éléments en conflit du fichier AssemblyInfo.cs,
  • supprimer complètement le fichier ou
  • désactiver GenerateAssemblyInfo (comme suggéré dans une autre réponse de Serge Semenov )

Mon erreur s’est produite car, en quelque sorte, un dossier obj a été créé dans mon dossier de contrôleurs. Faites simplement une recherche dans votre application pour trouver une ligne dans votre Assemblyinfo.cs. Il peut y avoir un doublon quelque part.

Dans mon cas, il y avait un sous-dossier dans un projet qui était un dossier de projet lui-même:

  • système de fichiers:

    • c: \ projects \ webapi \ wepapi.csproj
    • c: \ projects \ webapi \ tests \ wepapitests.csproj
  • Solution

    • webapi (dossier et projet)
      • tests (dossier)
    • tests (dossier et projet)

Ensuite, j’ai dû supprimer le sous-dossier “tests” du projet “webapi”.

Mon erreur était que je faisais également référence à un autre fichier de mon projet, qui contenait également une valeur pour l’atsortingbut “AssemblyVersion”. J’ai supprimé cet atsortingbut de l’un des fichiers et il fonctionne maintenant correctement.

La clé est de s’assurer que cette valeur n’est pas déclarée plus d’une fois dans aucun fichier de votre projet.

Une autre solution lors de la mise à niveau de core vers VS2017 consiste à les supprimer dans le fichier properties \ assemblyinfo.cs.

Comme ils sont maintenant stockés dans le projet.