L'espace de noms XML par défaut du projet doit être l'espace de noms XML MSBuild

150

J'ai cloné localement le référentiel ASP.NET Core SignalR et essayez d'ouvrir la solution à partir de l'environnement suivant.

IDE

Microsoft Visual Studio Enterprise 2015
Version 14.0.25431.01 Update 3
Microsoft .NET Framework
Version 4.6.01055

CLI DOT NET

λ dotnet --info
.NET Command Line Tools (1.0.0-preview2-1-003177)

Product Information:
 Version:            1.0.0-preview2-1-003177
 Commit SHA-1 hash:  a2df9c2576

Runtime Environment:
 OS Name:     Windows
 OS Version:  6.1.7601
 OS Platform: Windows
 RID:         win7-x64

Je finis par voir beaucoup de ces types de messages d'erreur:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : erreur: l'espace de noms XML par défaut du projet doit être l'espace de noms XML MSBuild. Si le projet est créé au format MSBuild 2003, veuillez l'ajouter xmlns="http://schemas.microsoft.com/developer/msbuild/2003"à l'élément. Si le projet a été créé dans l'ancien format 1.0 ou 1.2, veuillez le convertir au format MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Je veux savoir comment résoudre ce problème de la bonne manière.

David Pine
la source
J'ai juste supposé que je pourrais le faire, est-ce une supposition que je ne devrais pas faire? J'espère que cela est rétrocompatible.
David Pine
1
Eh bien, j'obtiens cette erreur après avoir autorisé VS2017 RTM à mettre à jour le format du projet :-(
Simon_Weaver
J'ai posté une erreur similaire ici .. stackoverflow.com/questions/58336983/… , mais dans mon cas, je commence avec un nouveau projet, sans essayer d'en ouvrir un existant.
joedotnot

Réponses:

212

Les projets que vous essayez d'ouvrir sont au nouveau format csproj .NET Core. Cela signifie que vous devez utiliser Visual Studio 2017 qui prend en charge ce nouveau format.

Pour un peu d'histoire, initialement .NET Core utilisé à la project.jsonplace de *.csproj. Cependant, après de csprojlongues délibérations internes chez Microsoft, ils ont décidé de revenir à un format beaucoup plus propre et mis à jour. Cependant, ce nouveau format n'est pris en charge que dans VS2017.

Si vous voulez ouvrir les projets , mais ne veulent pas attendre jusqu'au 7 Mars e pour la sortie officielle de VS2017, vous pouvez utiliser le code Visual Studio à la place.

DavidG
la source
Je connais très bien l'histoire, je suppose que j'ai simplement supposé que cela fonctionnerait. L'erreur ne semble pas être trop éloignée du domaine du possible. Êtes-vous certain qu'il n'y a aucun moyen de faire fonctionner cela avec un minimum d'effort pour le moment, sans les bits Visual Studio 2017 RC ?
David Pine
Pas avec VS2015, non. C'est pourquoi j'ai proposé VS Code comme alternative. Au moins, vous n'avez qu'une semaine à attendre la sortie de VS2017 :)
DavidG
C'est vrai, merci! De quelle version de l' interface de ligne de commande DOT NET ai-je besoin pour utiliser VS Code ?
David Pine
2
@ThePartyTurtle Pour être honnête, ce serait demander à VS2015 de comprendre un format de fichier qu'il ne supportera jamais.
DavidG
44

J'ai rencontré ce problème lors de l'ouverture de Service Fabric GettingStartedApplication dans Visual Studio 2015. La solution d'origine a été construite sur .NET Core dans VS 2017 et j'ai eu la même erreur lors de l'ouverture en 2015.

Voici les étapes que j'ai suivies pour résoudre le problème.

  • Cliquez avec le bouton droit sur le projet (chargement échoué) et modifiez-le dans Visual Studio.
  • Vu la ligne suivante dans la balise Project: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Suivez les instructions affichées dans le message d'erreur pour ajouter xmlns="http://schemas.microsoft.com/developer/msbuild/2003"à cette balise

Il devrait maintenant ressembler à:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Le rechargement du projet m'a donné l'erreur suivante (la vôtre peut être différente en fonction de ce qui est inclus dans votre projet)

L'élément "Update" <Aucun> n'est pas reconnu

  • Vu que l'élément None avait un attribut de mise à jour comme ci-dessous:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • A commenté cela comme ci-dessous.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • À la prochaine erreur: la version dans la référence du package n'est pas reconnue La version de l'élément <PackageReference> n'est pas reconnue

  • Vu que la version est là dans csproj xml comme ci-dessous (lignes supplémentaires de PackageReference supprimées par souci de concision)

  • Suppression de l'attribut Version

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • J'obtiens maintenant ce qui suit: Mise à niveau automatique VS

Bingo! La mise à niveau à sens unique de Visual Studio a démarré! Laissez VS faire la magie!

  • Le projet est chargé mais avec des erreurs de bibliothèque de référence. entrez la description de l'image ici

  • Correction des erreurs de bibliothèque de référence individuellement, en supprimant et en remplaçant dans NuGet pour que le projet fonctionne!

J'espère que cela aide un autre voyageur de code :-D

Jersey_Guy
la source
3
@DavidG Ce n'est pas une perte de temps puisque tous les projets n'ont pas de branche VS2015.
usr-bin-
Vous devez ajouter que vous devez cliquer sur "Afficher tous les fichiers" dans la barre d'outils de l'Explorateur de solutions pour voir à nouveau les dossiers du projet. Ils apparaîtront "en pointillés" et vous devrez cliquer avec le bouton droit de la souris, sélectionner chacun d'eux et sélectionner "Inclure dans le projet" pour les réinstituer.
vapcguy
Ce sont exactement les problèmes que j'ai rencontrés .. étape par étape les a suivis .. Merci !!
Samra
14

La réponse de @ DavidG est correcte, mais j'aimerais ajouter que si vous construisez à partir de la ligne de commande, la solution équivalente est de vous assurer que vous utilisez la version appropriée de msbuild(dans ce cas particulier, il doit s'agir de la version 15).

Exécutez msbuild /?pour voir quelle version vous utilisez ou where msbuildpour vérifier à quel emplacement l'environnement prend l'exécutable et mettez à jour (ou pointez vers le bon emplacement de) les outils si nécessaire.

Téléchargez le dernier outil MSBuild à partir d' ici .

Nikita G.
la source
6

Si vous obtenez cette erreur en essayant de créer l'application .Net Core 2.0 sur VSTS, assurez-vous que votre définition de construction utilise la Hosted VS2017file d'attente de l' agent.

Scotty.NET
la source
J'ai eu un problème similaire avec un projet VS Azure Functions qui ciblait le framework .net mais générait toujours le fichier csproj dans un format de base. Ce correctif a fonctionné pour moi.
ElliotSchmelliot
3

Je recevais les mêmes messages alors que j'exécutais juste msbuild de PowerShell.

dotnet msbuild "./project.csproj" travaillé pour moi.

you_rule
la source
C'est fondamentalement la même réponse que celle-ci . Vous devez utiliser la dernière version de msbuild.
DavidG
0

si le projet n'est pas un gros,

1- changer le nom du dossier projet

2- faire un nouveau projet avec le même projet (avant de renommer)

3- ajouter des fichiers existants de l'ancien projet au nouveau projet (totalement identiques, mêmes dossiers, mêmes noms, ...)

4- Ouvrez le nouveau fichier de projet (au format xml) et l'ancien projet

5- Copiez le nouveau fichier projet (contenu xml) et collez-le dans l'ancien fichier projet

6- supprimer l'ancien projet

7- Renommez l'ancien projet de dossier en ancien nom

Mohammad Ahmad Abdullah
la source