Я устанавливаю на свой компьютер с Windows 10 (это компьютер x64) старый VS2013 Professional / VS2015 Professional.У меня есть решение / проект Visual C ++ для собственной платформы x86, и я пытаюсь скомпилировать его с помощью MSBuild.
Прежде всего: какой MSBuild выбрать?
Я попытался выбратьодин из раздела реестра: HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
Но, возможно, это не те инструменты (на этом сайте есть указание на это), потому что он указывает на: C: \ Windows\ Microsoft.NET \ Framework64 \ v4.0.30319 \
Это инструмент Msbuild для проектов на C # / Vb.net, а не для собственной платформы x86.Возможно, недавнее изменение в обновлении Windows по этому поводу изменило значение реестра.Затем я попытался изменить его на: VS 2013: C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin \
VS 2015: C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \
Затем я установил для среды:
VS 2013: VCTargetPath = c: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120
VS 2015: VCTargetPath = c: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140
Я открываю «собственную командную строку x86» (с «Запуск от имени администратора») из VS2013/ 2015, а затем я запускаю следующее:
VS2013:
set VCTargetPath = \ MSBuild.exe project.vcxproj / nologo / p: PlatformToolset = v120; Конфигурация = Отладка / v: подробно
VS2015:
set VCTargetPath = \ MSBuild.exe project.vcxproj / nologo / p: PlatformToolset = v140; Конфигурация = Отладка / v: подробный
Я всегда получаю ошибку: LNK 1158 - невозможно запустить \ cvtres.exe
Файл проекта project.vcxproj правильно указывает Platform = Win32 и PlatformToolset (один из приведенных выше, характерных для VS 2013/2015).Путь к файлу cvtres.exe кажется правильным: с помощью утилиты sysInternals ProcessMonitor я вижу, что файл cvtres.exe правильно найден.Но при выполнении с msbuild он сначала загружает копию cvtres.exe, которая находится в каталоге: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \
, а затем пытается загрузить и выполнитьодин в:
VS 2013: C: / Program Files (x86) / Microsoft Visual Studio 12.0 / VC / BIN / cvtres.exe
VS 2015: C: / Program Files (x86)/ Microsoft Visual Studio 12.0 / VC / BIN / cvtres.exe
Корректно выполняется даже выполнение команды link из цепочки MSBuild, которая загружает только определенный файл cvtres.exe (не копию).
Возможно, что-то непоследовательное в цепочке инструментов msbuild или в какой-то ИТ-политике в моем домене ПК, которая блокирует выполнение cvtres.exe при передаче через копию в: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \
Есть ли у вас какие-либо предложения о том, как найти проблему?