Подтвердить что ты не робот

По умолчанию пространство имен 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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ниже приведены шаги, которые я предпринял для устранения проблемы.

  • Щелкните правой кнопкой мыши по проекту (Load 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">
  • Перезагрузка проекта дала мне следующую ошибку (ваши могут отличаться в зависимости от того, что включено в ваш проект)

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

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

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

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

  • Разделил атрибут Version

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

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

  • Загружен проект, но с ошибками ссылки lib. введите описание изображения здесь

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

dotnet msbuild "./project.csproj".