Я создал PROJ файл MSBuild, который содержит следующий заголовок:VisualStudioVersion = «VersionLatest» не подхватили
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0" TargetFrameworkVersion="4.5" VisualStudioVersion="VersionLatest">
Этот файл проектируемый используется для запуска MSBuild по ряду SSDT проектов, пары с развертыванием.
Для большинства разработчиков это нормально. Однако при попытке запустить сборку один из разработчиков встречает исключение Deploy72002
. В соответствии с ответом this это связано с тем, что VisualStudioVersion не установлен. Разумеется, добавление
set VisualStudioVersion="12.0"
в пакетном файле до вызова MSBuild устраняет проблему.
Однако, я был под впечатлением (я не могу найти источник сейчас), что настройка VisualStudioVersion="VersionLatest"
в xml файла proj была достаточной, чтобы использовать самую высокую версию VS. Я даже попытался установить его с VersionLatest
на 12.0
, а также переместить его из корневого узла в собственный узел в <PropertyGroup>
.
Я бы предпочел не иметь жесткой ссылки на 12.0 в пакетном файле. Я пропустил что-то очевидное, чтобы заставить VersionLatest работать?
«VersionLatest» просто закодирован до 12.0 прямо сейчас в Microsoft.Build.Utilities.v12.0.dll. Следующая версия VS, вероятно, будет иметь еще одну версию MSBuild, которая, вероятно, собирается скорректировать ее на несчастливое число. Или он останется 12.0, потому что вы просите ToolsVersion 12.0 :) Не делайте ничего решительного, пока у вас нет этой версии и не знаете, что она делает. –
Даже если он жестко закодирован до 12 в системе, почему он не извлекается из файла .proj для этого одного разработчика? –