Der Standard-XML-Namespace des Projekts muss der MSBuild-XML-Namespace sein

150

Ich habe das ASP.NET Core SignalR Repo lokal geklont und versucht, die Lösung in der folgenden Umgebung zu öffnen.

IDE

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

DOT NET CLI

λ 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

Am Ende sehe ich viele dieser Fehlermeldungen:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error: Der Standard-XML-Namespace des Projekts muss der MSBuild-XML-Namespace sein. Wenn das Projekt im MSBuild 2003-Format erstellt wurde, fügen Sie xmlns="http://schemas.microsoft.com/developer/msbuild/2003"es dem Element hinzu. Wenn das Projekt im alten 1.0- oder 1.2-Format erstellt wurde, konvertieren Sie es bitte in das MSBuild 2003-Format. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Ich möchte wissen, wie ich das richtig beheben kann.

David Pine
quelle
Ich habe nur angenommen, dass ich dazu in der Lage wäre. Ist das eine Annahme, die ich nicht machen sollte? Ich würde hoffen, dass dies abwärtskompatibel ist.
David Pine
1
Nun, ich bekomme diesen Fehler, nachdem ich VS2017 RTM erlaubt habe, das Projektformat zu aktualisieren :-(
Simon_Weaver
Ich habe hier einen ähnlichen Fehler gepostet. stackoverflow.com/questions/58336983/… , aber in meinem Fall beginne ich mit einem neuen Projekt und versuche nicht, ein vorhandenes zu öffnen.
Joedotnot

Antworten:

212

Die Projekte, die Sie öffnen möchten, haben das neue .NET Core csproj-Format. Dies bedeutet, dass Sie Visual Studio 2017 verwenden müssen, das dieses neue Format unterstützt.

Für ein bisschen Geschichte wurde zunächst .NET Core project.jsonanstelle von .NET Core verwendet *.csproj. Nach einigen erheblichen internen Überlegungen bei Microsoft entschieden sie sich csprojjedoch, zu einem viel saubereren und aktualisierten Format zurückzukehren. Dieses neue Format wird jedoch nur in VS2017 unterstützt.

Wenn Sie die Projekte öffnen wollen , wollen aber nicht bis zum 7. März warten th für die offizielle VS2017 Release, könnten Sie stattdessen Visual Studio - Code verwenden.

DavidG
quelle
Ich bin sehr vertraut mit der Geschichte, ich glaube, ich habe nur angenommen, dass dies funktionieren würde. Der Fehler scheint nicht zu weit vom Möglichen entfernt zu sein. Sind Sie sicher, dass es ohne die Visual Studio 2017 RC- Bits vorerst keine Möglichkeit gibt, dies mit minimalem Aufwand zum Laufen zu bringen?
David Pine
Nicht mit VS2015, nein. Deshalb habe ich VS Code als Alternative angeboten. Zumindest hast du nur eine Woche Zeit, um auf die Veröffentlichung von
VS2017
Das stimmt, danke! Welche Version der DOT NET CLI benötige ich, um VS Code zu verwenden ?
David Pine
2
@ThePartyTurtle Um fair zu sein, müsste VS2015 ein Dateiformat verstehen, das niemals unterstützt wird.
DavidG
43

Beim Öffnen der Service Fabric GettingStartedApplication ist dieses Problem aufgetreten in Visual Studio 2015 ist . Die ursprüngliche Lösung wurde in VS 2017 auf .NET Core erstellt, und beim Öffnen im Jahr 2015 wurde der gleiche Fehler .

Hier sind die Schritte, die ich ausgeführt habe, um das Problem zu beheben.

  • Klicken Sie mit der rechten Maustaste auf das Projekt (Laden fehlgeschlagen) und bearbeiten Sie es in Visual Studio.
  • Im Projekt-Tag wurde die folgende Zeile angezeigt: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Befolgen Sie die Anweisungen in der Fehlermeldung, um xmlns="http://schemas.microsoft.com/developer/msbuild/2003"dieses Tag zu ergänzen

Es sollte jetzt so aussehen:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Das Neuladen des Projekts gab mir den nächsten Fehler (Ihr Fehler kann je nach dem, was in Ihrem Projekt enthalten ist, unterschiedlich sein).

Das Element "Update" <Keine> wird nicht erkannt

  • Sah, dass kein Element ein Update-Attribut wie folgt hatte:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • Kommentierte das wie folgt aus.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • Zum nächsten Fehler: Die Version in der Paketreferenz wird nicht erkannt Die Version im Element <PackageReference> wird nicht erkannt

  • Ich habe gesehen, dass die Version in csproj xml wie folgt vorhanden ist (zusätzliche PackageReference-Zeilen wurden der Kürze halber entfernt).

  • Das Versionsattribut wurde entfernt

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • Ich bekomme jetzt folgendes: VS Auto Upgrade

Bingo! Das Visual Studio One-Way-Upgrade hat begonnen! Lass VS die Magie machen!

  • Das Projekt wurde geladen, aber mit Referenz-Lib-Fehlern. Geben Sie hier die Bildbeschreibung ein

  • Die Fehler in der Referenzbibliothek wurden einzeln behoben, indem sie in NuGet entfernt und ersetzt wurden, damit das Projekt funktioniert!

Hoffe das hilft einem anderen Code-Reisenden :-D

Jersey_Guy
quelle
3
@DavidG Es ist keine Zeitverschwendung, da nicht alle Projekte einen VS2015-Zweig haben.
usr-bin-trinken
Sie müssen hinzufügen, dass Sie in der Symbolleiste des Projektmappen-Explorers auf "Alle Dateien anzeigen" klicken müssen, um die Ordner des Projekts erneut anzuzeigen. Sie werden "gepunktet"
angezeigt
14

Die Antwort von @ DavidG ist richtig, aber ich möchte hinzufügen, dass beim Erstellen über die Befehlszeile die entsprechende Lösung darin besteht, sicherzustellen, dass Sie die entsprechende Version von verwenden msbuild(in diesem speziellen Fall muss es sich um eine Version handeln fünfzehn).

Führen Sie diese aus, msbuild /?um festzustellen, welche Version Sie verwenden, oder um where msbuildzu überprüfen, von welchem ​​Speicherort die Umgebung die ausführbare Datei übernimmt, und aktualisieren Sie die Tools (oder zeigen Sie auf den richtigen Speicherort), falls erforderlich.

Laden Sie die neueste MSBuild - Tool von hier .

Nikita G.
quelle
6

Wenn beim Versuch, eine .NET Core 2.0-App auf VSTS zu erstellen, dieser Fehler auftritt, stellen Sie sicher, dass Ihre Build-Definition die Agentenwarteschlange verwendet Hosted VS2017.

Scotty.NET
quelle
Ich hatte ein ähnliches Problem mit einem VS Azure Functions-Projekt, das auf das .net-Framework abzielte, aber dennoch die csproj-Datei in einem Kernformat generierte. Dieser Fix hat bei mir funktioniert.
ElliotSchmelliot
3

Ich habe die gleichen Nachrichten erhalten, während ich nur msbuild von Powershell ausgeführt habe.

dotnet msbuild "./project.csproj" arbeitete für mich.

du entscheidest
quelle
Dies ist im Grunde die gleiche Antwort wie diese . Sie müssen die neueste Version von msbuild verwenden.
DavidG
0

Wenn das Projekt nicht groß ist,

1- Ändern Sie den Namen des Ordnerprojekts

2- Erstellen Sie ein neues Projekt mit demselben Projekt (vor dem Umbenennen).

3- Fügen Sie dem neuen Projekt vorhandene Dateien aus dem alten Projekt hinzu (völlig gleich, gleiche Ordner, gleiche Namen, ...)

4- Öffnen Sie die neue Projektdatei (als XML) und das alte Projekt

5- Kopieren Sie die neue Projektdatei (XML-Inhalt) und fügen Sie sie in die alte Projektdatei ein

6- Löschen Sie das alte Projekt

7- Benennen Sie das alte Ordnerprojekt in alten Namen um

Mohammad Ahmad Abdullah
quelle