Lo spazio dei nomi XML predefinito del progetto deve essere lo spazio dei nomi XML di MSBuild


150

Ho clonato a livello locale ASP.NET Core SignalR Repo e ho provato ad aprire la soluzione dal seguente ambiente.

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

Alla fine vedo molti di questi tipi di messaggi di errore:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : errore: lo spazio dei nomi XML predefinito del progetto deve essere lo spazio dei nomi XML di MSBuild. Se il progetto è stato creato nel formato MSBuild 2003, si prega di aggiungere xmlns="http://schemas.microsoft.com/developer/msbuild/2003"all'elemento. Se il progetto è stato creato nel vecchio formato 1.0 o 1.2, si prega di convertirlo nel formato MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Voglio sapere come risolvere il problema nel modo corretto.


Ho solo pensato che sarei stato in grado, è un presupposto che non dovrei fare? Spero che questo sia retrocompatibile.
David Pine,

1
Bene, ricevo questo errore dopo aver consentito a VS2017 RTM di aggiornare il formato del progetto :-(
Simon_Weaver

ho pubblicato un errore simile qui .. stackoverflow.com/questions/58336983/… , tuttavia nel mio caso sto iniziando con un nuovo proj, non provando ad aprirne uno esistente.
Joedotnot non l'

Risposte:


212

I progetti che stai tentando di aprire sono nel nuovo formato csproj di .NET Core. Ciò significa che è necessario utilizzare Visual Studio 2017 che supporta questo nuovo formato.

Per un po 'di storia, inizialmente è stato utilizzato .NET Core project.jsoninvece di *.csproj. Tuttavia, dopo alcune considerevoli deliberazioni interne alla Microsoft, decisero di tornare indietro, csprojma con un formato molto più pulito e aggiornato. Tuttavia, questo nuovo formato è supportato solo in VS2017.

Se si desidera aprire i progetti, ma non si vuole aspettare fino a 7 mar ° per il rilascio ufficiale VS2017, è possibile utilizzare invece codice Visual Studio.


Conosco molto bene la storia, immagino di aver appena pensato che avrebbe funzionato. L'errore non sembra essere troppo lontano dal regno del possibile. Sei sicuro che non ci sia modo di farlo funzionare con il minimo sforzo per il momento, senza i bit RC di Visual Studio 2017 ?
David Pine,

Non con VS2015, no. Ecco perché ho offerto VS Code in alternativa. Almeno hai solo una settimana per aspettare il rilascio di VS2017 :)
DavidG,

È vero, grazie! Quale versione dell'interfaccia della riga di comando DOT NET è necessaria per utilizzare VS Code ?
David Pine,

2
@ThePartyTurtle Ad essere sinceri, ciò richiederebbe a VS2015 di comprendere un formato di file che non supporterà mai.
DavidG,

44

Ho riscontrato questo problema durante l'apertura di Service Fabric GettingStartedApplication in Visual Studio 2015. La soluzione originale è stata costruita su .NET Core in VS 2017 e ho avuto lo stesso errore all'apertura nel 2015.

Ecco i passaggi che ho seguito per risolvere il problema.

  • Fare clic con il tasto destro del mouse sul progetto (caricamento non riuscito) e modificarlo in Visual Studio.
  • Ho visto la seguente riga nel tag Progetto: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Seguire le istruzioni visualizzate nel messaggio di errore per aggiungere xmlns="http://schemas.microsoft.com/developer/msbuild/2003"a questo tag

Ora dovrebbe apparire come:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Ricaricare il progetto mi ha dato il prossimo errore (il tuo potrebbe essere diverso in base a ciò che è incluso nel tuo progetto)

L'elemento "Aggiorna" <Nessuno> non è riconosciuto

  • Ho visto che nessuno aveva un attributo di aggiornamento come di seguito:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • Commentato come sotto.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • Al prossimo errore: la versione in Riferimento pacchetto non è riconosciuta La versione nell'elemento <PackageReference> non è riconosciuta

  • Ho visto che la versione è presente in csproj xml come di seguito (Linee di riferimento del pacchetto aggiuntivo rimosse per brevità)

  • Spogliato l'attributo Versione

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • Ora ricevo quanto segue: VS Auto Upgrade

Bingo! È iniziato l'aggiornamento visuale di One-Way Studio! Lascia che VS faccia la magia!

  • Il progetto è stato caricato ma con errori lib di riferimento. inserisci qui la descrizione dell'immagine

  • Risolti i singoli errori di lib di riferimento, rimuovendoli e sostituendoli in NuGet per far funzionare il progetto!

Spero che questo aiuti un altro viaggiatore del codice :-D


3
@DavidG Non è una perdita di tempo poiché non tutti i progetti hanno un ramo VS2015.
usr-bin-drinking

È necessario aggiungere che è necessario fare clic su "Mostra tutti i file" nella barra degli strumenti Esplora soluzioni per visualizzare nuovamente le cartelle del progetto. Appariranno "punteggiati" e dovrai fare clic con il tasto destro del mouse e selezionare ognuno di essi e selezionare "Includi nel progetto" per reintegrarli.
vapcguy,

Questi erano esattamente i problemi che ho dovuto affrontare ... passo dopo passo li ho seguiti..Grazie !!
Samra,

14

@La risposta di DavidG è corretta, ma vorrei aggiungere che se stai compilando dalla riga di comando, la soluzione equivalente è assicurarti di utilizzare la versione appropriata di msbuild(in questo caso particolare, deve essere la versione 15).

Esegui msbuild /?per vedere quale versione stai usando o where msbuildper controllare da quale posizione prende l'eseguibile e aggiorna (o punta alla giusta posizione) degli strumenti se necessario.

Scarica l'ultimo strumento MSBuild da qui .


6

Se si verifica questo errore durante il tentativo di compilare l'app .Net Core 2.0 su VSTS, assicurarsi che la definizione di compilazione stia utilizzando la Hosted VS2017coda dell'agente.


Ho avuto un problema simile con un progetto VS Azure Functions che riguardava il framework .net ma generava comunque il file csproj in un formato principale. Questa correzione ha funzionato per me.
ElliotSchmelliot,

3

Stavo ricevendo gli stessi messaggi mentre stavo eseguendo solo msbuild da PowerShell.

dotnet msbuild "./project.csproj" ha funzionato per me.


Questa è sostanzialmente la stessa risposta di questa . Devi utilizzare l'ultima versione di msbuild.
DavidG,

0

se il progetto non è un grande,

1- cambia il nome del progetto della cartella

2- creare un nuovo progetto con lo stesso progetto (prima di rinominare)

3- aggiungere file esistenti dal vecchio progetto al nuovo progetto (totalmente stessi, stesse cartelle, stessi nomi, ...)

4- aprire il nuovo file di progetto (come xml) e il vecchio progetto

5- copiare il nuovo file di progetto (contenuto xml) e incollarlo nel vecchio file di progetto

6- eliminare il vecchio progetto

7- rinominare il vecchio progetto di cartella con il vecchio nome

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.