Domyślna przestrzeń nazw XML projektu musi być przestrzenią nazw MSBuild XML

150

Sklonowałem lokalnie repozytorium SignalR ASP.NET Core i próbuję otworzyć rozwiązanie z poziomu następującego środowiska.

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

W końcu widzę wiele tego rodzaju komunikatów o błędach:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : błąd: domyślna przestrzeń nazw XML projektu musi być przestrzenią nazw MSBuild XML. Jeśli projekt jest tworzony w formacie MSBuild 2003, dodaj xmlns="http://schemas.microsoft.com/developer/msbuild/2003"do elementu. Jeśli projekt został utworzony w starym formacie 1.0 lub 1.2, przekonwertuj go do formatu MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Chcę wiedzieć, jak to naprawić we właściwy sposób.

David Pine
źródło
Właśnie założyłem, że dam radę, czy jest to założenie, którego nie powinienem robić? Mam nadzieję, że jest to zgodne wstecz.
David Pine,
1
Cóż, pojawia się ten błąd po zezwoleniu VS2017 RTM na aktualizację formatu projektu :-(
Simon_Weaver,
opublikowałem tutaj podobny błąd .. stackoverflow.com/questions/58336983/… jednak w moim przypadku zaczynam od nowego projektu, nie próbując otworzyć istniejącego.
joedotnot

Odpowiedzi:

212

Projekty, które próbujesz otworzyć, są w nowym formacie .NET Core csproj. Oznacza to, że musisz użyć programu Visual Studio 2017, który obsługuje ten nowy format.

Dla trochę historii, początkowo .NET Core project.jsonzamiast *.csproj. Jednak po kilku poważnych wewnętrznych naradach w firmie Microsoft zdecydowali się wrócić do csprojznacznie czystszego i zaktualizowanego formatu. Jednak ten nowy format jest obsługiwany tylko w VS2017.

Jeśli chcesz otworzyć projekty, ale nie chce czekać aż 7 marca th do oficjalnego wydania VS2017, można użyć kodu Visual Studio zamiast.

DavidG
źródło
Bardzo dobrze znam historię, chyba po prostu założyłem, że to zadziała. Błąd nie wydaje się być zbyt odległy od sfery możliwości. Czy na pewno nie ma sposobu, aby to działało na razie przy minimalnym wysiłku, bez bitów RC programu Visual Studio 2017 ?
David Pine
Nie w przypadku VS2015, nie. Dlatego jako alternatywę zaproponowałem VS Code. Przynajmniej masz tylko tydzień, aby czekać na wydanie VS2017 :)
DavidG
To prawda, dzięki! Jakiej wersji DOT NET CLI potrzebuję, jeśli mam używać VS Code ?
David Pine
2
@ThePartyTurtle Aby być uczciwym, wymagałoby to od VS2015 zrozumienia formatu pliku, którego nigdy nie będzie obsługiwał.
DavidG
44

Napotkałem ten problem podczas otwierania aplikacji Service Fabric GettingStartedApplication w programie Visual Studio 2015. Oryginalne rozwiązanie zostało oparte na platformie .NET Core w programie VS 2017 i wystąpił ten sam błąd podczas otwierania w 2015 r.

Oto kroki, które wykonałem, aby rozwiązać problem.

  • Kliknij prawym przyciskiem myszy projekt (załadowanie nie powiodło się) i edytuj w programie Visual Studio.
  • Widziałem następujący wiersz w tagu projektu: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Postępuj zgodnie z instrukcjami wyświetlanymi w komunikacie o błędzie, aby dodać xmlns="http://schemas.microsoft.com/developer/msbuild/2003"do tego tagu

Powinien teraz wyglądać następująco:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Ponowne załadowanie projektu dało mi kolejny błąd (twój może się różnić w zależności od tego, co jest zawarte w twoim projekcie)

Nierozpoznany element „Update” <None>

  • Zobaczyłem, że żaden element nie ma atrybutu aktualizacji, jak poniżej:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • Skomentowałem to jak poniżej.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • Na następny błąd: Nierozpoznana wersja w odwołaniu do pakietu Wersja w elemencie <PackageReference> jest nierozpoznana

  • Zobaczyłem, że wersja jest tam w csproj xml, jak poniżej (dodatkowe wiersze PackageReference zostały usunięte dla zwięzłości)

  • Usunięto atrybut Version

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • Teraz otrzymuję następujące informacje: VS Auto Upgrade

Bingo! Uruchomiono jednokierunkowe uaktualnienie programu Visual Studio! Niech VS zrobi magię!

  • Projekt został załadowany, ale z błędami biblioteki referencyjnej. wprowadź opis obrazu tutaj

  • Naprawiono błędy biblioteki referencyjnej indywidualnie, usuwając i zastępując w NuGet, aby projekt działał!

Mam nadzieję, że to pomoże innemu podróżnikowi kodu :-D

Jersey_Guy
źródło
3
@DavidG To nie jest strata czasu, ponieważ nie wszystkie projekty mają gałąź VS2015.
usr-bin-drinking
Musisz dodać, że musisz kliknąć „Pokaż wszystkie pliki” na pasku narzędzi Eksploratora rozwiązań, aby ponownie zobaczyć foldery projektu. Pojawią się „wykropione” i musisz kliknąć prawym przyciskiem myszy i wybrać każdą z nich i wybrać „Uwzględnij w projekcie”, aby ponownie je wprowadzić.
vapcguy
To były dokładnie te problemy, z którymi się mierzyłem .. krok po kroku postępowałem zgodnie z nimi .. Dzięki !!
Samra
14

@ DavidG odpowiedź jest poprawna, ale chciałbym dodać, że jeśli budujesz z wiersza poleceń, równoważnym rozwiązaniem jest upewnienie się, że używasz odpowiedniej wersji msbuild(w tym konkretnym przypadku musi to być wersja 15).

Uruchom, msbuild /?aby zobaczyć, której wersji używasz lubwhere msbuild sprawdzić, z której lokalizacji środowisko pobiera plik wykonywalny i zaktualizować (lub wskazać właściwą lokalizację) narzędzi, jeśli to konieczne.

Pobierz najnowsze narzędzie MSBuild stąd .

Nikita G.
źródło
6

Jeśli pojawia się ten błąd podczas próby zbudowania aplikacji .Net Core 2.0 w VSTS, upewnij się, że definicja kompilacji używa Hosted VS2017kolejki agentów.

Scotty.NET
źródło
Miałem podobny problem z projektem VS Azure Functions, który był przeznaczony dla platformy .net, ale nadal generował plik csproj w formacie podstawowym. Ta poprawka zadziałała dla mnie.
ElliotSchmelliot
3

Otrzymywałem te same wiadomości, gdy uruchamiałem tylko MSBuild z PowerShell.

dotnet msbuild "./project.csproj" pracował dla mnie.

rządzisz
źródło
To w zasadzie ta sama odpowiedź, co ta . Musisz używać najnowszej wersji msbuild.
DavidG
0

jeśli projekt nie jest duży,

1- Zmień nazwę projektu folderu

2- Stwórz nowy projekt z tym samym projektem (przed zmianą nazwy)

3- Dodaj istniejące pliki ze starego projektu do nowego projektu (całkowicie takie same, te same foldery, te same nazwy, ...)

4- Otwórz nowy plik projektu (jako xml) i stary projekt

5- Skopiuj nowy plik projektu (zawartość xml) i wklej go do starego pliku projektu

6- Usuń stary projekt

7- zmień nazwę projektu starego folderu na starą nazwę

Mohammad Ahmad Abdullah
źródło