MSBuild目标最新的TargetPlatformVersion

3

我正在使用MSBuild在不同的工作站上构建解决方案。例如,在安装有Visual Studio 2017和10.017763.0平台版本的工作站上,我执行以下操作:

Original Answer翻译成"最初的回答"

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

在其他节点上,此目标不可用。那么如何告诉MSBUILD在多个可用版本中使用最新的目标平台版本呢?

原始答案: "最初的回答"

1个回答

4

你可以冒险使用以下(未记录在案)的函数来获取最新支持的版本:

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

请参阅此处此处了解更多相关背景和以上代码片段的来源。
然而,您可能需要重新考虑并考虑是否使用它。因为这样,您几乎没有可靠的构建,取决于您构建的节点,您正在使用不同的设置(甚至是不受控制的)。您可能应该选择所有节点的最小公共版本,或者升级其他节点。这样,无论您在何处构建,都可以确保您正在使用相同的(构建)工具并获得相同的构建结果。

此外,这并不涉及到构建工具(称为平台工具集),而只涉及到软件开发工具包(SDK)。我对细节不太确定,但总体来说,选择不同的SDK应该没有太大区别,除了较新的SDK版本可以解锁最新的Windows API。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接