Конвейер Azure Devops не может найти al.exe
Я переношу локальную сборку на Azure Devops. Я использую агент сборки Azure по умолчанию, в конфигурации агента по умолчанию ничего не указано.
Вот часть конвейера сборки YAML, которая выдает ошибку:
- task: NuGetCommand@2
displayName: 'Build Assemblies: Restore'
inputs:
command: 'restore'
restoreSolution: '$(FooSolutionSolution)'
feedsToUse: 'config'
- task: VSBuild@1
displayName: 'Build Assemblies: Run'
inputs:
solution: '$(FooSolutionSolution)'
platform: '$(FooSolutionBuildPlatform)'
configuration: '$(buildConfiguration)'
msbuildArgs: '-t:rebuild'
Он использует стандартный файл Microsoft.Common.CurrentVersion.targets, но не может найти al.exe
.
CoreCompile:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\vbc.exe /noconfig /imports: {..imports..} /optioncompare:Binary /optionexplicit+ /optionstrict+ /optioninfer+ /nostdlib /platform:AnyCPU /rootnamespace:FooCorp.Central /sdkpath:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1" /highentropyva+ /define:"CONFIG=\"Release\",TRACE=-1,_MyType=\"Windows\",PLATFORM=\"x64\"" /reference: {..references ..} /main:"FooCorp.Central.(None)" /debug- /keyfile:d:\a\1\s\Builds\FooCorpKey\FooCorpKey.snk /optimize+ /out:.\obj\x64\Release\FooSolution\FooCorp.Central.dll /ruleset:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset" /subsystemversion:6.00 /resource:.{..resources..} /target:library /warnaserror+ /utf8output /langversion:14 AssemblyInfo.vb {..all other vb files..} "C:\Users\VssAdministrator\AppData\Local\Temp\.NETFramework,Version=v4.5.1.AssemblyAttributes.vb"
Using shared compilation with compiler from directory: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
GenerateSatelliteAssemblies:
Creating directory ".\obj\x64\Release\FooSolution\es".
Creating directory ".\obj\x64\Release\FooSolution\ru".
Creating directory ".\obj\x64\Release\FooSolution\zh-CN".
Creating directory ".\obj\x64\Release\FooSolution\lb-LU".
##[error]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(3639,5):
Error MSB6004: The specified task executable location "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\al.exe" is invalid.
Это то, что я не думаю, что могу контролировать.
Для сравнения, когда я запускаю сборку локально из командной строки, вывод из той же части сборки:
GenerateSatelliteAssemblies:
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\al.exe /culture:zh-CN /keyfile:C:\s-gl\Builds\FooCorpKey\FooCorpKey.snk /out:.\obj\x64\Release\FooSolution\zh-CN\FooCorp.Central.Lic.resources.dll /platform:AnyCPU /template:.\obj\x64\Release\FooSolution\FooCorp.Central.Lic.dll /embed:.\obj\x64\Release\FooSolution\FooCorp.Central.Lic.a1.zh-CN.resources /embed:.\obj\x64\Release\FooSolution\FooCorp.Central.Lic.a2.zh-CN.resources /embed:.\obj\x64\Release\FooSolution\FooCorp.Central.Lic.a3.zh-CN.resources
Поскольку агент сборки предоставляется Azure, есть ли способ определить, где находятся инструменты SDK?
Хотя /questions/34636243/msbuild-na-ci-server-ne-mozhet-najti-alexe/34636257#34636257 сообщалось для TeamCity, а не для Azure Devops, решение заключалось в том, чтобы указать другой путь кal.exe
. Мне нужно сделать что-то подобное здесь?
Спасибо
1 ответ
Судя по журналам, похоже, что вы используете размещенный windows-2019
агент.
По умолчанию NETFX 4.6.1 Tools
не установлены на windows-2019
агент. Так что он не может найтиal.exe
файл под "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\al.exe"
. Дополнительные сведения см. В разделе Размещенная Windows 2019.
Тем не менее NETFX 4.6.1 Tools
установлены на vs2017-win2016
агент. Итак, попробуйте использоватьvs2017-win2016
агент вместо windows-2019
агент.
Вы можете запустить следующие команды в конвейере, чтобы проверить установленные версии инструментов NETFX на каждом из агентов:
cd 'C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin'
dir
Итак, чтобы использовать последнюю windows-2019
агента, вы можете попробовать указать путь к редактированию SDK прямо в файле [название проекта].csproj, добавив:
<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools</TargetFrameworkSDKToolsDirectory>