По умолчанию пространство имен 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
Я хочу знать, как правильно исправить это.
Ответы
Ответ 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"
.