Я пытаюсь запустить команду MSBuild для упаковки приложения UWP с этапа сборки Azure TFS.
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" "C:\TFSagent\_work\1\s\MyProject.sln" /t:Build /p:Configuration=master /p:Platform=x86"
Эта команда хорошо выполняется, когда я захожу на удаленный агент ВМ и просто выполняю команду: пакет создается нормально, как и ожидалось.
Но когда команда выполняется через агент TFS, который работает как служба, я получил следующую ошибку:
2019-06-16T22:15:16.0141845Z C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2638,5): error APPX0002: Task 'ValidateAppxManifest' failed. Namespace prefix 'm' is not defined. [C:\TFSagent\_work\1\s\MyProject.vcxproj]
2019-06-16T22:15:16.0142853Z C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2638,5): error APPX0002: [C:\TFSagent\_work\1\s\MyProject.vcxproj]
2019-06-16T22:15:16.9689847Z C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2638,5): error MSB4018: The "ValidateAppxManifest" task failed unexpectedly. [C:\TFSagent\_work\1\s\MyProject.vcxproj]
2019-06-16T22:15:16.9690436Z C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2638,5): error MSB4018: System.Xml.XPath.XPathException: Namespace prefix 'm' is not defined. [C:\TFSagent\_work\1\s\MyProject.vcxproj]
...
Работает: Microsoft Visual Studio Team Foundation Server версии 16.131.28507.4
Агент настроен как служба для Windows 10 VM с использованием локального пользователя, которому предоставлены права администратора.
Шаг сборки так же прост, как командная строка, выполняемая над командой.
Я пытался добавить /nodeReuse:false /m:1
.
Нет никакого использования пространства имен 'm' в соответствующем манифесте (и, как он работает, когда запускается «вручную», я полагаю, сам манифест в порядке)
Я просто ожидаю, что команда будет работать одинаково при запуске от пользователя или службы.
РЕДАКТИРОВАТЬ 1:
Возможно, я обнаружил, откуда исходит пространство имен 'm' (при использовании /v:diag
:
Task Parameter:
AppxManifestSchemas=
C:\Program Files (x86)\Windows Kits\10\\Include\10.0.18362.0\WinRT\FoundationManifestSchema.xsd
NamespaceAlias=m
NamespaceUri=http://schemas.microsoft.com/appx/manifest/foundation/windows10
C:\Program Files (x86)\Windows Kits\10\\Include\10.0.18362.0\WinRT\UapManifestSchema.xsd
NamespaceAlias=uap
NamespaceUri=http://schemas.microsoft.com/appx/manifest/uap/windows10 (TaskId:271)
РЕДАКТИРОВАТЬ 2
в нерабочем журнале msbuild diag параметр AppxManifestSchemas вообще не отображается, что, вероятно, объясняет первоначальную ошибку.
Следующий шаг: выяснить, почему параметр не отправляется на задание.