Spațiul de nume XML implicit al proiectului trebuie să fie spațiul de nume XML MSBuild. (Programare, Asp.Net Mvc, Asp.Net Core, Visual Studio 2015, Msbuild,.Net Core)

David Pine a intrebat.

Am clonat fișierul ASP.NET Core SignalR Repo la nivel local și încerc să deschid soluția din următorul mediu.

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

Ajung să văd o mulțime de mesaje de eroare de acest tip:

..ReposSignalRsrcMicrosoft.AspNetCore.SignalRMicrosoft.AspNetCore.SignalR.csproj : eroare : Spațiul de nume XML implicit al proiectului trebuie să fie spațiul de nume XML MSBuild. Dacă proiectul este creat în formatul MSBuild 2003, vă rugăm să adăugați la element. Dacă proiectul a fost creat în vechiul format 1.0 sau 1.2, vă rugăm să îl convertiți în formatul MSBuild 2003. ..ReposSignalRsrcMicrosoft.AspNetCore.SignalRMicrosoft.AspNetCore.SignalR.csproj

Vreau să știu cum să rezolv acest lucru în mod corect.

Comentarii

  • Am presupus că voi putea să o fac, este o presupunere pe care nu ar trebui să o fac? Aș spera că acest lucru este compatibil cu versiunile anterioare. –  > Por David Pine.
  • Ei bine, primesc această eroare după ce am permis ca VS2017 RTM să actualizeze formatul proiectului 🙁 -.  > Por Simon_Weaver.
  • am postat o eroare similară aici… stackoverflow.com/questions/58336983/… , totuși, în cazul meu, încep cu un nou proiect, nu încerc să deschid unul existent. –  > Por joedotnotnot.
6 răspunsuri
DavidG

Proiectele pe care încercați să le deschideți sunt în noul format .NET Core csproj. Acest lucru înseamnă că trebuie să utilizați Visual Studio 2017, care acceptă acest nou format.

Pentru un pic de istorie, inițial .NET Core folosea project.json în loc de *.csproj. Cu toate acestea, după o deliberare internă considerabilă la Microsoft, au decis să revină la csproj dar cu un format mult mai curat și actualizat. Cu toate acestea, acest nou format este acceptat doar în VS2017.

Dacă doriți să deschideți proiectele, dar nu doriți să așteptați până la 7 martieth pentru lansarea oficială a VS2017, puteți folosi în schimb Visual Studio Code.

Comentarii

  • Cunosc foarte bine istoricul, cred că am presupus că acest lucru va funcționa. Eroarea nu pare să fie prea departe de domeniul posibilului. Sunteți sigur că nu există nicio modalitate de a face acest lucru să funcționeze cu un efort minim deocamdată, fără Visual Studio 2017 RC biți? –  > Por David Pine.
  • Nu cu VS2015, nu. De aceea am oferit VS Code ca alternativă. Cel puțin mai aveți de așteptat doar o săptămână până când va fi lansat VS2017 🙂 –  > Por DavidG.
  • Este adevărat, mulțumesc! Ce versiune a DOT NET CLI de care am nevoie dacă vreau să folosesc Codul VS? –  > Por David Pine.
  • @ThePartyTurtle Ca să fim corecți, asta ar însemna să îi cerem lui VS2015 să înțeleagă un format de fișier pe care nu îl va suporta niciodată. –  > Por DavidG.
Jersey_Guy

M-am lovit de această problemă în timp ce deschideam Service Fabric GettingStartedApplication în Visual Studio 2015. Soluția originală a fost construită pe .NET Core în VS 2017 și am primit aceeași eroare la deschiderea în 2015.

Iată pașii pe care i-am urmat pentru a rezolva problema.

  • Faceți clic dreapta pe proiectul (load Failed) și editați-l în Visual Studio.
  • A văzut următoarea linie în tag-ul Project: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • A urmat instrucțiunile afișate în mesajul de eroare pentru a adăuga la această etichetă

Acum ar trebui să arate așa::

<Project Sdk="Microsoft.NET.Sdk.Web" >
  • Reîncărcarea proiectului mi-a dat următoarea eroare (a ta poate fi diferită în funcție de ceea ce este inclus în proiectul tău)

  • Am văzut că elementul None avea un atribut de actualizare, după cum urmează:

    <None Update="wwwroot***;Views***;Areas**Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
    
  • Am comentat acest lucru după cum urmează.

    <!--<None Update="wwwroot***;Views***;Areas**Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
    
  • Am trecut la următoarea eroare: Version in Package Reference is unrecognized

  • Am văzut că Version este prezentă în csproj xml, după cum urmează (liniile suplimentare din PackageReference au fost eliminate din motive de concizie).

  • Am eliminat atributul Version

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
    
  • Acum primesc următorul mesaj:

Bingo! Actualizarea Visual Studio One-way s-a activat! Lăsați VS să facă magia!

  • Proiectul a fost încărcat, dar cu erori de referință lib.

  • Am corectat erorile librării de referință în mod individual, prin eliminarea și înlocuirea în NuGet pentru ca proiectul să funcționeze!

Sper că acest lucru ajută un alt călător de cod 😀

Comentarii

  • @DavidG Nu este o pierdere de timp, deoarece nu toate proiectele au o ramură VS2015. –  > Por usr-bin-drinking.
  • Trebuie să adaug că trebuie să faceți clic pe „Show All Files” în bara de instrumente Solution Explorer pentru a vedea dosarele proiectului, din nou. Acestea vor apărea „punctate” și va trebui să faceți clic dreapta și să le selectați pe fiecare și să selectați „Include in Project” pentru a le reintroduce în. –  > Por vapcguy.
  • Acestea au fost exact problemele cu care m-am confruntat ..pas cu pas le-am urmat..Mulțumesc!!! –  > Por Samra.
Nikita G.

Răspunsul lui @DavidG este corect, dar aș dori să adaug că, dacă construiți din linia de comandă, soluția echivalentă este să vă asigurați că folosiți versiunea corespunzătoare de msbuild (în acest caz particular, trebuie să fie versiunea 15).

Rulați msbuild /? pentru a vedea ce versiune folosiți sau where msbuild pentru a verifica din ce locație ia mediul executabilul și actualizați (sau indicați locația corectă a) instrumentelor, dacă este necesar.

Descărcați cea mai recentă unealtă MSBuild de la aici.

Scotty.NET

Dacă primiți această eroare încercând să construiți o aplicație .Net Core 2.0 pe VSTS, asigurați-vă că definiția de construcție utilizează Hosted VS2017 Agent queue.

Comentarii

  • Am avut o problemă similară cu un proiect VS Azure Functions care viza .net framework, dar totuși a generat fișierul csproj într-un format de bază. Această soluție a funcționat pentru mine. –  > Por ElliotSchmelliot.
you_rule

Am primit aceleași mesaje în timp ce executam doar msbuild din powershell.

dotnet msbuild "./project.csproj" a funcționat pentru mine.

Comentarii

  • Acesta este practic același răspuns ca și acesta. Trebuie să folosești cea mai recentă versiune de msbuild. –  > Por DavidG.
Mohammad Ahmad Abdullah

în cazul în care proiectul nu este un proiect mare ,

1- schimbați numele proiectului de dosar

2- faceți un nou proiect cu același proiect (înainte de redenumire)

3- adăugați fișierele existente din vechiul proiect la noul proiect (total aceleași , aceleași foldere , aceleași nume , …)

4- deschideți noul fișier de proiect (ca xml ) și vechiul proiect

5- copiați noul fișier de proiect (conținut xml ) și lipiți-l în vechiul fișier de proiect

6- ștergeți vechiul proiect

7- redenumiți vechiul dosar de proiect cu vechiul nume