El espacio de nombres XML predeterminado del proyecto debe ser el espacio de nombres XML de MSBuild

150

Cloné el ASP.NET Core SignalR Repo localmente, e intente abrir la solución desde dentro del entorno siguiente.

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

Termino viendo muchos de estos tipos de mensajes de error:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error: el espacio de nombres XML predeterminado del proyecto debe ser el espacio de nombres XML de MSBuild. Si el proyecto está creado en el formato MSBuild 2003, agréguelo xmlns="http://schemas.microsoft.com/developer/msbuild/2003"al elemento. Si el proyecto se creó en el formato antiguo 1.0 o 1.2, conviértalo al formato MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Quiero saber cómo solucionar esto de la manera correcta.

David Pine
fuente
Simplemente supuse que podría hacerlo, ¿es eso una suposición que no debo hacer? Espero que esto sea compatible con versiones anteriores.
David Pine
1
Bueno, recibo este error después de permitir que VS2017 RTM actualice el formato del proyecto :-(
Simon_Weaver
publiqué un error similar aquí ... stackoverflow.com/questions/58336983/… , sin embargo, en mi caso estoy comenzando con un nuevo proyecto, no intento abrir uno existente.
joedotnot

Respuestas:

212

Los proyectos que está intentando abrir están en el nuevo formato .NET Core csproj. Esto significa que debe usar Visual Studio 2017, que admite este nuevo formato.

Para un poco de historia, inicialmente se utilizó .NET Core en project.jsonlugar de *.csproj. Sin embargo, después de una considerable deliberación interna en Microsoft, decidieron volver csprojpero con un formato mucho más limpio y actualizado. Sin embargo, este nuevo formato solo es compatible con VS2017.

Si desea abrir los proyectos pero no quiere esperar hasta el 7 de marzo para el lanzamiento oficial de VS2017, puede usar Visual Studio Code en su lugar.

DavidG
fuente
Estoy muy familiarizado con la historia, supongo que supuse que esto funcionaría. El error no parece estar demasiado lejos del ámbito de lo posible. ¿Está seguro de que no hay forma de que esto funcione con un mínimo esfuerzo por el momento, sin los bits RC de Visual Studio 2017 ?
David Pine
No con VS2015, no. Es por eso que ofrecí VS Code como alternativa. Al menos solo tienes una semana para esperar a que se publique VS2017 :)
DavidG
Eso es verdad, gracias! ¿Qué versión de DOT NET CLI necesito para usar VS Code ?
David Pine
2
@ThePartyTurtle Para ser justos, eso sería pedirle a VS2015 que comprenda un formato de archivo que nunca admitirá.
DavidG
44

Me encontré con este problema al abrir Service Fabric GettingStartedApplication en Visual Studio 2015. La solución original se creó en .NET Core en VS 2017 y recibí el mismo error al abrir en 2015.

Estos son los pasos que seguí para resolver el problema.

  • Haga clic derecho en el proyecto (error de carga) y edite en Visual Studio.
  • Vio la siguiente línea en la etiqueta Proyecto: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Seguí las instrucciones que se muestran en el mensaje de error para agregar xmlns="http://schemas.microsoft.com/developer/msbuild/2003" a esta etiqueta

Ahora debería verse así:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Recargar el proyecto me dio el siguiente error (el tuyo puede ser diferente según lo que esté incluido en tu proyecto)

El elemento "Actualizar" <Ninguno> no se reconoce

  • Vio que ningún elemento tenía un atributo de actualización como se muestra a continuación:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • Comentó eso como a continuación.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • En el siguiente error: la versión en la referencia del paquete no se reconoce La versión en el elemento <PackageReference> no se reconoce

  • Vi que la versión está en csproj xml como se muestra a continuación (líneas de referencia de paquete adicionales eliminadas por brevedad)

  • Despojado del atributo Versión

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • Ahora obtengo lo siguiente: VS Auto Upgrade

¡Bingo! La actualización visual Studio One-way comenzó! ¡Deja que VS haga la magia!

  • El proyecto se cargó pero con errores de lib de referencia. ingrese la descripción de la imagen aquí

  • ¡Se corrigieron los errores de lib de referencia individualmente, eliminando y reemplazando en NuGet para que el proyecto funcione!

Espero que esto ayude a otro viajero de código :-D

Jersey_Guy
fuente
3
@DavidG No es una pérdida de tiempo ya que no todos los proyectos tienen una rama VS2015.
usr-bin-drinking
Debe agregar que debe hacer clic en "Mostrar todos los archivos" en la barra de herramientas del Explorador de soluciones para ver de nuevo las carpetas del proyecto. Aparecerán "punteados" y deberá hacer clic con el botón derecho y seleccionar cada uno y seleccionar "Incluir en el proyecto" para reinsertarlos.
vapcguy
Estos fueron exactamente los problemas que enfrenté ... paso a paso los seguí ... ¡Gracias!
Samra
14

La respuesta de @ DavidG es correcta, pero me gustaría agregar que si está compilando desde la línea de comandos, la solución equivalente es asegurarse de que está utilizando la versión adecuada de msbuild(en este caso particular, debe ser la versión 15).

Ejecute msbuild /?para ver qué versión está utilizando owhere msbuild para verificar de qué ubicación toma el ejecutable el entorno y actualice (o señale la ubicación correcta) de las herramientas si es necesario.

Descargue la última herramienta de MSBuild desde aquí .

Nikita G.
fuente
6

Si recibe este error al intentar compilar la aplicación .Net Core 2.0 en VSTS, asegúrese de que su definición de compilación esté utilizando la Hosted VS2017cola del Agente.

Scotty.NET
fuente
Tuve un problema similar con un proyecto VS Azure Functions que apuntaba a .NET Framework pero aún generaba el archivo csproj en un formato central. Esta solución funcionó para mí.
ElliotSchmelliot
3

Recibía los mismos mensajes mientras ejecutaba solo msbuild desde powershell.

dotnet msbuild "./project.csproj" trabajó para mi.

you_rule
fuente
Esta es básicamente la misma respuesta que esta . Debe estar utilizando la última versión de msbuild.
DavidG
0

si el proyecto no es grande,

1- cambia el nombre del proyecto de carpeta

2- hacer un nuevo proyecto con el mismo proyecto (antes de renombrar)

3- agrega archivos existentes del proyecto anterior al nuevo proyecto (totalmente iguales, mismas carpetas, mismos nombres, ...)

4- abre el nuevo archivo de proyecto (como xml) y el proyecto anterior

5- copie el nuevo archivo de proyecto (contenido xml) y péguelo en el archivo de proyecto anterior

6- elimina el proyecto anterior

7- renombra el proyecto de la carpeta anterior a nombre antiguo

Mohammad Ahmad Abdullah
fuente