"Не удалось выполнить задачу, потому что AXImp.exe не найден" при использовании MSBuild 12 для создания проекта MVC 4.0

Я пытаюсь настроить сервер сборки с помощью CruiseControl.Net и MSBuild. Однако он не работает с ошибкой:

 "C:\Builds\PremiumStore\checkout\PremiumStore.sln" (default target) (1) ->
    "C:\Builds\PremiumStore\checkout\Web\PremiumStoreWeb.csproj" (default target) (37) ->
    (ResolveComReferences target) ->
    C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(2151,5):     
    error MSB3091: Task failed because "AxImp.exe" was not found, or the correct Microsoft  
    Windows SDK is not installed.
 The task is looking for "AxImp.exe" in the "bin" subdirectory beneath the location specified in the InstallationFolder value of the registry key `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-  NetFx40Tools-x86.`

 You may be able to solve the problem by doing one of the following:    

 1. Install the Microsoft Windows SDK.

 2. Install Visual Studio

 3. Manually set

    the above registry key to the correct location.  4) Pass the correct location into the 
    "ToolPath" parameter of the task. 
    [C:\Builds\PremiumStore\checkout\Web\PremiumStoreWeb.csproj]

То же самое прекрасно работает на моей машине, а не на сервере.

Я попытался найти по всему Интернету решение, но не могу его найти. Если возможно, я бы предпочел не устанавливать Visual Studio на сервере сборки. Это своего рода чрезмерная установка для установки всей IDE только для создания строковых команд. Я установил Microsoft Build Tools 2013 на этом сервере, но, похоже, не помогает.

Я попытался ввести путь в реестр, как это было предложено в сообщении об ошибке, но это тоже не сработало. Я также проверил путь, указанный в реестре, и файл aximp.exe действительно присутствует, но в подпапке под названием "NetFx 4.5.1 Tools". Однако копирование файлов отсюда на один уровень до родительской папки "bin" также не помогает.

Если это помогает, мой сервер сборки работает на Windows Server 2012.

Спасибо заранее.

Ответ 1

То, что они рекомендуют в качестве шага 1 ( "установить Microsoft Windows SDK" ), является правильным советом. Установите Microsoft Windows SDK.

Ответ 2

В Windows 10 я установил "Microsoft Windows SDK" 8.1, но это мне не помогло.

Итак, я использовал параметр 3) в описании ошибки: вручную установите раздел реестра.

Открыта команда "regedit" из CMD и найдена локация (как предложено исключение) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDK\Windows\ v8.0A
Папка "WinSDK-NetFx40Tools-x86" отсутствовала, поэтому я создал ее и выполнил следующие клавиши:

ComponentName: инструменты SDK для Windows для .NET Framework 4.0
InstallFolder: C:\Program Files (x86)\Microsoft SDK\Windows\v8.0A\bin\NETFX 4.0 Tools\
ProductVersion: 8.0.50727

P.S.: убедитесь, что в "C:\Program Files (x86)\Microsoft SDK\Windows\v8.0A\bin\NETFX 4.0 Tools \" у вас есть AxImp.exe

По тому же алгоритму вы можете попробовать другую версию - v8.1A.

Ответ 3

Я решил проблему при установке Windows 8.1 SDK

Ответ 4

Это все еще проблема, с которой я столкнулся сегодня, и обнаружил, что когда я пытаюсь скомпилировать приложение в Visual Studio, оно компилируется правильно, но запускается MSBuild.exe из C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe сгенерировал эту ошибку.

После установки .NET 4.7.2 SDK, но с той же проблемой, я обнаружил, что существуют другие экземпляры MSBuild.exe.

Я изменил наш скрипт сборки на использование C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe и проблема "волшебным образом" исчезла.

Ответ 5

Чтобы обойти эту проблему, мне пришлось пройти следующие шаги.

  • Мне пришлось установить Windows SDK (в моем случае версию 7.1), но он не мог быть установлен по причине, описанной в этом вопросе;
  • Затем я приступил к изменению ключей реестра, подробно изложенных в ответе на этот вопрос, но получил сообщение "Ошибка записи значений нового содержимого". сообщение;
  • Я продолжил следовать этому руководству (также связанному в комментариях к ответу на вышеупомянутый вопрос), чтобы все равно изменить ключи реестра;
  • Затем я смог установить Windows SDK, а затем вручную создал искомый раздел реестра, убедившись, что значение "InstallationFolder" указывает на вновь созданную папку SDK (в моем случае, "C:\Program Files\Microsoft". SDKs\Windows\v7.1").

Это позволило мне преодолеть эту ошибку.

Ответ 6

Чтобы решить эту проблему, я установил Windows SDK 10, 8 и 7 и изменил реестр, чтобы указать правильную позицию, где находится AxImp.exe. Но, к сожалению, я все еще получил ту же ошибку.

Я просто случайно обнаружил, что использование MSBuild 14.0 вместо 4.0 (C:\Windows\Microsoft.NET\Framework\v4.0.30319) может успешно построить мой проект.

Чтобы использовать MSBuild 14.0, вам необходимо настроить путь в переменной среды.

Ответ 7

Я долго боролся с этим. Я, должно быть, установил шестнадцать разных вещей и попробовал двадцать разных версий ответа раздела реестра ("Задача не удалась, потому что AXImp.exe не был найден" при использовании MSBuild 12 для сборки проекта MVC 4.0). В конце концов я понял, что я использовал buildtools v14, когда мне следовало использовать 15. Поэтому вместо использования C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe я использовал C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe, а затем ошибка исчезла.