MSBuild target самая последняя версия TargetPlatformVersion - PullRequest
1 голос
/ 11 мая 2019

Я создаю решение с помощью MSBuild на разных рабочих станциях.Например, на рабочей станции, на которой установлена ​​Visual Studio 2017 с платформой версии 10.017763.0, я делаю:

msbuild solution.sln / p: Configuration = Release / p: Platform = x64 / p: TargetPlatformVersion = 10.0.17763.0

На других узлах эта цель недоступна.Итак, как я могу сказать MSBUILD использовать самую последнюю версию целевой платформы, если доступно несколько?

Заранее спасибо за ваш конструктивный вклад.

1 Ответ

3 голосов
/ 12 мая 2019

Вы можете выйти и использовать следующую (недокументированную) функцию для получения последней поддерживаемой версии:

<PropertyGroup>
  <LatestTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</LatestTargetPlatformVersion>
  <TargetPlatformVersion Condition="'$(TargetPlatformVersion)' == ''">$(LatestTargetPlatformVersion)</TargetPlatformVersion>
</PropertyGroup>

См. здесь и здесь для получения дополнительной информацииа также источник приведенного выше фрагмента.

Однако : Вы можете подумать еще раз и подумать об этом вообще.Потому что таким образом у вас практически нет надежных сборок, в зависимости от того, на каком узле вы строите, вы используете разные настройки (даже неконтролируемые).Вам, вероятно, лучше либо выбрать наименьшую версию commen для всех узлов, либо обновить остальные.Таким образом, независимо от того, где вы строите, вы можете быть уверены, что используете одни и те же инструменты (сборки) и получите тот же результат сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...