it-swarm.com.ru

Пространство имен XML по умолчанию проекта должно быть пространством имен MSBuild XML

Я клонировал ASP.NET Core SignalR Repo локально и попытался открыть решение в следующей среде.

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

В итоге я вижу много таких сообщений об ошибках:

..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error: Пространство имен XML проекта по умолчанию должно быть Пространство имен MSBuild XML. Если проект написан в MSBuild 2003 формат, пожалуйста, добавьте xmlns="http://schemas.Microsoft.com/developer/msbuild/2003" к элемент. Если проект был создан в старой версии 1.0 или 1.2, пожалуйста, конвертируйте его в формат MSBuild 2003. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj

Я хочу знать, как это исправить правильно.

110
David Pine

Проекты, которые вы пытаетесь открыть, представлены в новом формате .Net Core csproj. Это означает, что вам нужно использовать Visual Studio 2017, которая поддерживает этот новый формат.

Для небольшой истории изначально .Net Core использовал project.json вместо *.csproj. Однако после некоторого внутреннего обсуждения в Microsoft они решили вернуться к csproj, но с гораздо более чистым и обновленным форматом. Однако этот новый формат поддерживается только в VS2017.

Если вы хотите открыть проекты, но не хотите ждать официального выпуска VS2017 до 7 марта, вместо этого вы можете использовать Visual Studio Code.

170
DavidG

Я столкнулся с этой проблемой при открытии Service Fabric GettingStartedApplication в Visual Studio 2015. Исходное решение было построено на .NET Core в VS 2017, и при открытии в 2015 году я получил ту же ошибку.

Вот шаги, которые я следовал, чтобы решить проблему.

  • Щелкните правой кнопкой мыши (загрузить Failed) проект и отредактируйте в visual studio.
  • Увидел следующую строку в теге Project: <Project Sdk="Microsoft.NET.Sdk.Web" >

  • Следуйте инструкциям в сообщении об ошибке, чтобы добавить xmlns="http://schemas.Microsoft.com/developer/msbuild/2003" к этому тегу

Теперь это должно выглядеть так:

<Project Sdk="Microsoft.NET.Sdk.Web" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  • Перезагрузка проекта дала мне следующую ошибку (ваша может отличаться в зависимости от того, что включено в ваш проект)

"Update" element <None> is unrecognized

  • Увидел, что элемент None имеет атрибут обновления, как показано ниже:

    <None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>
    
  • Прокомментировал это как ниже.

    <!--<None Update="wwwroot\**\*;Views\**\*;Areas\**\Views">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </None>-->
    
  • К следующей ошибке: Версия в справочнике пакетов не распознана Version in element <PackageReference> is unrecognized

  • Увидел, что версия есть в csproj xml, как показано ниже (для краткости дополнительные строки PackageReference удалены)

  • Удалил атрибут Версия

    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" />
    
  • Теперь я получаю следующее: VS Auto Upgrade

Бинго! Началось одностороннее обновление Visual Studio! Пусть VS сделает волшебство!

  • Проект загружен, но со ссылочными ошибками lib. enter image description here

  • Исправлены ошибки ссылочной библиотеки по отдельности, путем удаления и замены в NuGet, чтобы проект заработал!

Надеюсь, что это поможет другому путешественнику кода :-D

28
Jersey_Guy

@ DavidG ответ правильный, но я хотел бы добавить, что если вы строите из командной строки, то эквивалентным решением будет убедиться, что вы используете соответствующую версию msbuild (в данном конкретном случае она должна быть версия 15).

Запустите msbuild /?, чтобы узнать, какую версию вы используете, или where msbuild, чтобы проверить, из какого места среда получает исполняемый файл, и при необходимости обновить (или указать правильное местоположение) инструменты.

Загрузите последний инструмент MSBuild с здесь .

10
Nikita G.

Если вы получаете эту ошибку, пытаясь собрать приложение .Net Core 2.0 на VSTS, убедитесь, что ваше определение сборки использует очередь агента Hosted VS2017.

6
Scotty.NET

Я получал те же сообщения, когда работал только msbuild от powershell.

dotnet msbuild "./project.csproj" работал для меня.

0
you_rule