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

MSBuild на сервере CI не может найти AL.exe

У меня возникла проблема на моем сервере сборки TeamCity CI, где во время компиляции я получаю следующую ошибку:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342, 9): ошибка MSB3086: задача не могла найти "AL.exe" с помощью SdkToolsPath "или раздел реестра" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDK\Windows\v7.0A". Убедитесь, что SdkToolsPath установлен, и инструмент существует в правильном месте для конкретного процессора в SdkToolsPath и установлен SDK Microsoft Windows.

Я нашел похожие отчеты за год назад, когда люди обновлялись до .NET 3.5, например этот. В этом случае установка последней версии SDK решила проблему, однако я уже установил последнюю версию SDK (Microsoft Windows SDK для Windows 7 и .NET Framework 4) на моем сервере сборки. Средства MSBuild находятся на сервере, в папке с именем

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

и AL.exe существует в

C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\NETFX 4.0 Tools

Однако раздел реестра, упомянутый в сообщении об ошибке, не существует. Таким образом, похоже, что что-то не так с установкой/конфигурацией MSBuild. Эта ошибка возникает только для проектов с встроенными ресурсами, для которых требуется AL.exe.

4b9b3361

Ответ 1

Как вы установили последний SDK (я предполагаю, что v7.1)

  • Перейдите в "Microsoft Windows SDK v7.1" из меню "Пуск"
  • Выберите "Командная строка Windows SDK 7.1" и введите
  • cd Setup

  • WindowsSdkVer -version: v7.1

Это сообщит msbuild, чтобы использовать эту версию инструментов, не требуя какого-либо страшного редактирования реестра.

Ответ 2

Несмотря на то, что вопрос довольно старый, но он по-прежнему отображается в верхней части результатов поиска Google, поэтому я решил опубликовать свое решение. Я попал в одну и ту же проблему во время установки TeamCity в Windows Server 2016 и Windows 10 Pro.

Я установил Microsoft Build Tools 2015 и Windows 10 SDK (Только инструменты для .NET 4.6.2) и получил сообщение об ошибке.

Недопустимая головоломка заключалась в том, чтобы установить переменную среды: TargetFrameworkSDKToolsDirectory=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools.

После установки переменной окружения MSBuild смог разрешить все необходимые инструменты, включая AL.exe, и выполнить сборку.

Пожалуйста, дайте мне знать, если это может быть достигнуто путем установки значений в реестре, но в остальном переменные среды также работают очень хорошо в этом случае, и установка VS не требуется.

Ответ 3

Вам также необходимо применить следующее исправление реестра, чтобы обновить msbuild, чтобы указать значения sdk V7.1.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0]
"MSBuildToolsPath"="C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\"
"MSBuildToolsRoot"="C:\\WINDOWS\\Microsoft.NET\\Framework\\"
"FrameworkSDKRoot"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\[email protected])"
"MSBuildRuntimeVersion"="4.0.30319"
"SDK40ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\[email protected])"
"SDK35ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\[email protected])"
"MSBuildToolsPath32"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\[email protected])"

Ответ 4

У меня была такая же проблема, вот мой простой ответ на этот вопрос.

После установки Microsoft Windows SDK 7.1 на сервере TeamCity.

В Regedit Измените этот ключ

       HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath

to

        $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft          
        SDKs\Windows\v7.1\[email protected])

Посмотрите на картинку, я получил свой первый проект TeamCity Building с этим! (был v7.0a) У меня есть фотография, чтобы показать, как это было просто.

> Oops! Your picture couldn't be submitted because:
> 
> We're sorry, but as a spam prevention mechanism, new users aren't
> allowed to post images. Earn more than 10 reputation to post images.

Ответ 5

У меня есть простое, эффективное исправление.

Проблема заключается в том, что версия инструментов, поставляемая с Visual Studio, - это версия 7.0A, а версия, поставляемая с Windows SDK, - это версия 7.1. Все это очень хорошо, но MSBuild.exe по-прежнему ищет ключи реестра версии 7.0A, которых нет. Это должно быть ошибкой!

В моем реестре вся информация для V6.0 и V7.1 присутствует и правильная. Поэтому мое решение прост. Я создал ссылку реестра, которая делает псевдоним 7.1 ключей.

Невозможно создать ссылки на реестр с помощью встроенных инструментов, поэтому я загрузил небольшую утилиту под названием 'regln' из здесь.

C: > regln-x86.exe "\ Registry\Machine\SOFTWARE\Microsoft\Microsoft SDK\Windows\v7.0A" "\ Registry \ Machine\SOFTWARE\Microsoft\Microsoft SDK\Windows\v7.1"

Работа выполнена. MSBuild теперь отлично работает на сервере TeamCity.

Ответ 6

Включите эту же проблему, настроив новый сервер сборки на Windows 10. Нашел и установил последние (в то время) Microsoft Windows SDK для Windows 7 и .NET Framework 4, и это решило проблему.

Ответ 7

Недавно мы столкнулись с этой проблемой, пытаясь заставить наши сборки .Net 4.0 работать. Мы обнаружили, что местоположение al.exe изменилось между тем, где оригинальный MSBuild, который поставляется с .NET 4.0, и SDK Visual Studio для .Net 4.0 (который был выпущен позже).

Поскольку единственная автономная установка доступных инструментов SDK - это тот, который мы уже установили без успеха (тот, который вы упомянули), единственным решением, о котором мы могли подумать, было установить Visual Studio на агенты сборки. Мы размещаем Visual Studio 2010 Express (чтобы как можно меньше установить установку как можно более легкий), и проблема исчезла. Не очень красивое решение, но оно действительно работало - установка VS2010 также устанавливает инструменты SDK конкретной версии, которую MSBuild ищет.

Это проблема, которая действительно не должна произойти, но, похоже, не было способа заставить MSBuild выглядеть в правильном месте для инструментов, даже взломав в реестре.