Развертывание в Azure: ошибка MSB4041: пространство имен XML проекта по умолчанию должно быть пространством имен XML MSBuild

Я постоянно развертываю свое веб-приложение Azure, как обычно (с помощью Visual Studio Community 2019), но теперь получаю следующую ошибку.

(Кроме того, я уже видел этот вопрос: Пространством имен XML проекта по умолчанию должно быть пространство имен XML MSBuild, но я получаю эту ошибку только в журналах в Центре развертывания моего веб-приложения Azure, и этот вопрос относится к Visual Студия 2017.)

«WebApp» - это название решения:

D:\home\site\repository\packages\EntityFramework.6.3.0\build\EntityFramework.props(1,1): error MSB4041: The default XML namespace of the project must be the MSBuild XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the <Project> element. If the project has been authored in the old 1.0 or 1.2 format, please convert it to MSBuild 2003 format. [D:\home\site\repository\WebApp.WebUI\WebApp.WebUI.csproj] Failed exitCode=1, command="D:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" "D:\home\site\repository\WebApp.WebUI\WebApp.WebUI.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="D:\local\Temp\8d75ccda63e5816";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release;UseSharedCompilation=false /p:SolutionDir="D:\home\site\repository\.\\" An error has occurred during web site deployment. \r\nD:\Program Files (x86)\SiteExtensions\Kudu\84.10924.4104\bin\Scripts\starter.cmd "D:\home\site\deployments\tools\deploy.cmd"

Вот начало моего файла WebApp.WebUI.csproj:

<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\packages\EntityFramework.6.3.0\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.3.0\build\EntityFramework.props')" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

ОБНОВЛЕНИЕ: я перешел на Entity Framework 6.2.0. Теперь он работает, но это не очень хорошее решение. Проблема заключается в пакете Entity Framework 6.3.0 и / или в том, как он взаимодействует с моей текущей конфигурацией.


person nmit026    schedule 30.10.2019    source источник


Ответы (4)


Не могли бы вы попробовать изменить свой узел проекта, как показано ниже, у меня это сработало:

<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

Дополнительная ссылка:

http://blog.codenova.pl/post/new-azure-functions-sdk-and-vsts-how-to-build-your-functions

Сообщите мне, если все еще не работает для вас.

person Mohit Verma    schedule 30.10.2019
comment
Это только для Функций Azure? Также следует удалить атрибуты ToolsVersion="12.0" и DefaultTargets="Build"? - person nmit026; 30.10.2019
comment
Кроме того, я на самом деле не использую .NET Core, это решение только для .NET Core? - person nmit026; 30.10.2019

Я думаю, что эта проблема как-то связана с версией msbuild. Я погуглил несколько похожие проблемы и обнаружил, что EF6.3 требует как минимум VS2017 и выше. И если мы используем msbuild 14.0 (VS2015) для создания веб-проекта, использующего EF6.3, мы получим такую ​​же ошибку, как это:

введите описание изображения здесь

Причина вашей проблемы:

И, согласно вашему журналу (строка 7): _ 3_, во время этого процесса используется msbuild 14.0 (msbuild VS2015). Думаю, поэтому у вас такая странная ошибка.

1. Чтобы решить эту проблему, на локальном компьютере нам нужно использовать VS2017 (msbuild15.0) или VS2019 (msbuild16.0) для сборки этого проекта.

The path of msbuild 15.0: C:\Program Files (x86)\Microsoft Visual Studio\2017\xxx\MSBuild\15.0\Bin

The path of msbuild 16.0: C:\Program Files (x86)\Microsoft Visual Studio\2019\xxx\MSBuild\Current\Bin

2. Что касается поддержки msbuild для Azure: проверьте эту проблему. Теперь Azure поддерживает инструменты сборки VS2017 (msbuild 15.0), попробуйте полезную информацию там, чтобы настроить развертывание для использования msbuild 15.0.

Надеюсь, это поможет :)

person LoLance    schedule 31.10.2019
comment
Я использую Visual Studio Community 2019 на своей машине для разработки, никаких проблем. Я получаю эту ошибку только в Azure. Если что-то компилируется в Visual Studio 2019, неужели оно должно автоматически компилироваться в Azure? Иначе какой смысл использовать VS 2019? Значит, мне нужно вручную настроить msbuild в Azure? Как это сделать проще всего? - person nmit026; 01.11.2019
comment
Я имею в виду, что я вижу эту проблему, но если была добавлена ​​поддержка VS2017, разве она не должна работать? Если нет, могу я получить подробные инструкции, что именно делать? (В этой теме много чего происходит.) - person nmit026; 01.11.2019
comment
@ nmit026, после развертывания веб-приложения в службе приложений Azure его среда выполнения должна зависеть от конфигурации службы приложений Azure. Фактически, вы уже приближаетесь к решению. В ссылке Ланса есть шаги, описанные в этом. См. 2 ссылки: # 1 и №2. По умолчанию, если вы не выполняли настройку в службе приложений Azure. По умолчанию будет использоваться MSbuild14.0. Пожалуйста, перейдите по этим 2 ссылкам для настройки, а затем сообщите мне и Лэнсу, работает ли это для вас. - person Merlin Liang - MSFT; 01.11.2019
comment
@ MerlinLiang-MSFT. Я все еще не понимаю, как это сделать (там написано, что нужен собственный сценарий развертывания?). Я бы предпочел использовать 6.2.0, чем тратить время и лажать. Нет ли где-нибудь в интерфейсе, где мы можем выбрать, какая версия программы сборки будет использоваться? Странно, что Azure по умолчанию использует эквивалент VS2015, и его нелегко изменить. Обновление пакетов не должно нарушать работу веб-сайта. - person nmit026; 21.11.2019

Entity Framework 6.4.0 работает. (6.3.0 не будет.)

person nmit026    schedule 25.02.2020

Если есть способ узнать свою версию Visual Studio для развертывания в Azure. Не локальная версия VS, а серверная, которая используется для сборки вашего проекта при развертывании в Azure. Я чувствую, что это меньше, чем в 2017 году.

Обновление: поскольку версия VS - 2015, вы не сможете выполнить обновление, пока не обновите версию VS.

EF 6.3 использует новый формат csproj и требует VS 2017 и более поздних версий. Если вы перешли на EF 6.2, и он работает нормально. Поэтому в вашем случае попробуйте использовать VS2017 или более позднюю версию, чтобы создать проект для развертывания в Azure.

person Rohin Tak    schedule 04.11.2019
comment
Это MSBuild 14.0 (VS2015). - person nmit026; 26.11.2019