O espaço para nome XML padrão do projeto deve ser o espaço para nome XML MSBuild

150

Eu clonei o ASP.NET Core SignalR Repo localmente e tente abrir a solução no ambiente a seguir.

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

Acabo vendo muitos desses tipos de mensagens de erro:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error: O espaço para nome XML padrão do projeto deve ser o espaço para nome XML do MSBuild. Se o projeto for criado no formato MSBuild 2003, adicione xmlns="http://schemas.microsoft.com/developer/msbuild/2003"ao elemento Se o projeto foi criado no formato 1.0 ou 1.2 antigo, converta-o para o formato MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Eu quero saber como corrigir isso da maneira correta.

David Pine
fonte
Eu apenas presumi que eu seria capaz, isso não é uma suposição? Eu espero que isso seja compatível com versões anteriores.
David Pine
1
Bem, eu estou recebendo esse erro depois de permitir que o VS2017 RTM atualize o formato do projeto :-(
Simon_Weaver
Eu publiquei um erro semelhante aqui .. stackoverflow.com/questions/58336983/… , no entanto, no meu caso, estou começando com um novo proj, não tentando abrir um existente.
Joedotnot 11/10/19

Respostas:

212

Os projetos que você está tentando abrir estão no novo formato csproj do .NET Core. Isso significa que você precisa usar o Visual Studio 2017, que suporta esse novo formato.

Para um pouco de história, inicialmente o .NET Core foi usado em project.jsonvez de *.csproj. No entanto, após algumas considerações internas da Microsoft, eles decidiram voltar, csprojmas com um formato muito mais limpo e atualizado. No entanto, esse novo formato é suportado apenas no VS2017.

Se você quiser abrir os projetos, mas não querem esperar até sétimo março th para o lançamento oficial VS2017, você pode usar Visual Studio em vez Código.

DavidG
fonte
Estou muito familiarizado com a história, acho que assumi que isso funcionaria. O erro não parece estar muito longe do reino do possível. Você tem certeza de que não há como fazê-lo funcionar com o mínimo esforço por enquanto, sem os bits do Visual Studio 2017 RC ?
David Pine
Não com o VS2015, não. Por isso, ofereci o VS Code como alternativa. Pelo menos você só tem uma semana para esperar VS2017 para ser lançado :)
DavidG
Isso é verdade, obrigado! Qual versão do DOT NET CLI eu preciso para usar o VS Code ?
David Pine
2
@ThePartyTurtle Para ser justo, seria pedir ao VS2015 que entendesse um formato de arquivo que ele nunca suportará.
DavidG
44

Eu deparei com esse problema ao abrir o Service Fabric GettingStartedApplication no Visual Studio 2015. A solução original foi criada no .NET Core no VS 2017 e recebi o mesmo erro ao abrir em 2015.

Aqui estão as etapas que segui para resolver o problema.

  • Clique com o botão direito do mouse no projeto (carregar com falha) e edite-o no visual studio.
  • Vi a seguinte linha na tag Project: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Siga as instruções mostradas na mensagem de erro para adicionar xmlns="http://schemas.microsoft.com/developer/msbuild/2003"a esta tag

Agora deve parecer com:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  • Atualizar o projeto deu-me o próximo erro (o seu pode ser diferente com base no que está incluído no seu projeto)

O elemento "Atualizar" <Nenhum> não é reconhecido

  • Viu que nenhum elemento tinha um atributo de atualização como abaixo:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
  • Comentou isso como abaixo.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
  • Sobre o próximo erro: A versão na Referência do Pacote não é reconhecida A versão no elemento <PackageReference> não é reconhecida

  • Vi que a versão existe no csproj xml como abaixo (linhas adicionais PackageReference removidas por questões de brevidade)

  • Removido o atributo Versão

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
  • Agora, recebo o seguinte: Atualização automática do VS

Bingo! A atualização visual unidirecional do Studio começou! Vamos VS fazer a mágica!

  • O Projeto foi carregado, mas com erros de referência da lib. insira a descrição da imagem aqui

  • Corrigidos os erros da biblioteca de referência individualmente, removendo e substituindo no NuGet para que o projeto funcione!

Espero que isso ajude outro viajante de código :-D

Jersey_Guy
fonte
3
@DavidG Não é uma perda de tempo, pois nem todos os projetos têm uma filial do VS2015.
usr-bin-drinking
É necessário adicionar que você precisa clicar em "Mostrar todos os arquivos" na barra de ferramentas do Solution Explorer para ver as pastas do projeto novamente. Eles aparecerão "pontilhados" e você precisará clicar com o botão direito do mouse e selecionar cada um deles e selecionar "Incluir no projeto" para reinstituí-los.
vapcguy 27/01
Estes foram exatamente os problemas que eu enfrentei .. passo a passo os seguiu .. Obrigado !!
Samra
14

A resposta de @ DavidG está correta, mas eu gostaria de acrescentar que, se você estiver construindo a partir da linha de comando, a solução equivalente é garantir que você esteja usando a versão apropriada do msbuild (neste caso em particular, ele precisará ser a versão 15)

Corra msbuild /?para ver qual versão você está usando ouwhere msbuild para verificar em qual local o ambiente extrai o executável e atualize (ou aponte para o local correto) as ferramentas, se necessário.

Faça o download da ferramenta mais recente do MSBuild aqui .

Nikita G.
fonte
6

Se você receber esse erro ao tentar criar o aplicativo .Net Core 2.0 no VSTS, verifique se a definição de compilação está usando a Hosted VS2017fila do Agente.

Scotty.NET
fonte
Eu tive um problema semelhante com um projeto do VS Azure Functions que visava a estrutura .net, mas ainda gerava o arquivo csproj em um formato principal. Essa correção funcionou para mim.
ElliotSchmelliot
3

Eu estava recebendo as mesmas mensagens enquanto estava executando apenas o msbuild do powershell.

dotnet msbuild "./project.csproj" trabalhou para mim.

you_rule
fonte
Esta é basicamente a mesma resposta que esta . Você precisa estar usando a versão mais recente do msbuild.
DavidG 26/01/19
0

se o projeto não é grande,

1- alterar o nome do projeto da pasta

2- criar um novo projeto com o mesmo projeto (antes de renomear)

3- adicione arquivos existentes do projeto antigo ao novo projeto (totalmente iguais, mesmas pastas, mesmos nomes, ...)

4- abra o novo arquivo de projeto (como xml) e o projeto antigo

5- copie o novo arquivo de projeto (conteúdo xml) e cole-o no arquivo de projeto antigo

6- excluir o projeto antigo

7- renomeie o projeto da pasta antiga para o nome antigo

Mohammad Ahmad Abdullah
fonte