如何可靠地检测LC.exe的版本?

时间:2015-11-26 09:25:20

标签: .net msbuild visual-studio-extensions

对于自定义许可方案,我们将许可代码注入用户项目(msbuild),通过其msbuild任务利用LC.exe工具。我们希望从2010年开始支持所有VS版本(截至今天:2015年)。

LC任务公开每个版本中的各个参数集。那么" TargetFrameworkVersion"参数似乎在2015年是必须的(工具版本14.0),但在早期版本中不存在。因此,我们需要对LC目标实施单独调用。目前,我们区分了这种方式:

<LC Condition="'$(MSBuildToolsVersion)'=='14.0'" ...

然而,这似乎不起作用。一个例子:

具有ToolsVersion =&#34; 14.0&#34; msbuild定义中的属性是建立在,让我们说VS2012命令提示符。 $(MSBuildToolsVersion)解析为14,但仍然使用以下路径中的LC.exe(从msbuild日志中读取):

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\LC.exe

...对应于命令提示符的版本,我想。所以似乎不能使用$(MSBuildToolsVersion)参数来区分实际使用的SDK工具的版本?

如何检测用于构建项目的SDK版本?

更新:我也考虑了这个answer,但它基本上只提供了一个路径 - 而不是版本。

0 个答案:

没有答案