n'est pas reconnu - Retrouvez les réponses et les commentaires concernant cette question" />
5
votes

L'attribut "Version" dans l'élément n'est pas reconnu

J'ai une solution avec de nombreux projets qui ciblent .net 4.6.1. Sur notre serveur de construction MS, il se construit très bien. J'ai récemment ajouté un projet qui cible .NET Standard 1.3. Cela ne s'appuiera pas sur le serveur de build. Il se construit localement avec VS2017 très bien. Le serveur de build VS vient d'être mis à jour avec toutes les dernières.

L'erreur de construction que j'obtiens est: L'attribut "Version" dans l'élément n'est pas reconnu.

Je reçois ceci pour quelques références. En voici un extrait du fichier du projet:

Des idées?


2 commentaires

Probablement une incompatibilité de version de MSBuild. Votre serveur de build a probablement besoin d'une version plus récente.


Build Engine version 15.9.21 est ce qui est sur la machine


4 Réponses :


7
votes

Il semble que vous n'utilisez pas MSBuild.exe inclus dans VS 2017 (/ build tools) mais plutôt MSBuild.exe livré avec .NET Framework, qui est une ancienne version (et ne sera pas mis à jour ).

Pensez à utiliser VSWhere pour localiser MSBuild.exe


3 commentaires

Cela semble prometteur, mais je ne sais pas comment faire en sorte que le serveur de build utilise réellement le nouveau MSBuild. Je ne sais pas où VSWhere s'inscrit dans l'image. Je crée des définitions de build dans VS et lance la build de cette façon. De plus, je ne peux pas imaginer pourquoi je devrais recourir à VSWhere alors que je veux simplement utiliser le dernier MSBuild. J'ai clairement une image incomplète de la façon dont ce processus fonctionne.


Dépend de ce que vous utilisez comme serveur de build. TFS a des tâches pour les builds utilisant des versions VS récentes par exemple (sauf si vous utilisez des builds XAML mais ils sont quand même obsolètes)


Merci! c'était ça, dans mon cas, le projet que j'essayais de construire utilise Cake, j'ai donc dû faire quelques ajustements pour changer le chemin MSBuild par défaut de cette façon: stackoverflow.com/a/45251462/544947



1
votes

J'obtenais le même message d'erreur de compilation en utilisant NuGet Version: 3.4.4.1321

J'ai exécuté nuget update -self

Checking for updates from https://www.nuget.org/api/v2/.
Currently running NuGet.exe 3.4.4-rtm-1321.
Updating NuGet.exe to 5.1.0.
Update successful.


1 commentaires

Dans mon cas, nuget est à jour, à v5.1.0 et j'obtiens toujours l'erreur



1
votes

La bonne version de MSBuild est nécessaire pour créer un fichier projet avec des références de package avec l'attribut version. Depuis Team City, cette capture d'écran montre un exemple. Notez le nom «Microsoft Build Tools 2017». C'est le package que vous souhaitez avoir sur votre PC développeur ou serveur cible.

 Team City - Sélectionnez la version MSBuild

Cela sera utile pour les personnes de CI / devops / build qui ont besoin de créer des applications .NET / d'autres applications nécessitant MSbuild sur un serveur de build.


0 commentaires

2
votes

Si quelqu'un rencontre ce fil, reportez-vous à la solution ci-dessous pour les projets .Net Framework.

<PackageReference Include="System.Diagnostics.Process">
    <Version>4.3.0</Version>
</PackageReference>


1 commentaires

merci, cette solution fonctionne pour visual studio 2015!