如何从MSBuild中的GetFrameworkSdkPath获取特定版本的SDK

时间:2016-02-08 14:42:37

标签: .net msbuild

我希望能够在构建过程中提取mage.exe并将其添加到我的部署包中。我需要能够根据当前目标的框架版本提取特定版本的mage.exe工具。因此,例如,在构建.NET 4.0项目时,我想从(Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0工具)而不是(Microsoft SDKs \ Windows \ v10.0A \)打包mage.exe bin \ NETFX 4.6工具)。

我在构建过程中使用GetFrameworkSdkPath Task但它似乎没有撤回正确的SDK版本路径..

这是我目前的做法:

<Choose>
<When Condition="'$(TargetFrameworkVersion)'=='v2.0'">
  <PropertyGroup>
    <SDKVersionPath>FrameworkSdkVersion20Path</SDKVersionPath>
  </PropertyGroup>
</When>
<When Condition="'$(TargetFrameworkVersion)'=='v3.5'">
  <PropertyGroup>
    <SDKVersionPath>FrameworkSdkVersion35Path</SDKVersionPath>
  </PropertyGroup>
</When>
<When Condition="'$(TargetFrameworkVersion)'=='v4.0'">
  <PropertyGroup>
    <SDKVersionPath>FrameworkSdkVersion40Path</SDKVersionPath>
  </PropertyGroup>
</When>
</Choose>

<Target Name="GetSDKVersionPath">
 <PropertyGroup>
   <SDKVersionPath Condition="$(SDKVersionPath)==''">Path</SDKVersionPath>
 </PropertyGroup>
 <Message Text="SDK VERSION PATH: $(SDKVersionPath)"/>
 <GetFrameworkSdkPath>
   <Output
       TaskParameter="$(SDKVersionPath)"
       PropertyName="SdkPath" />
 </GetFrameworkSdkPath>
</Target>

使用这种方法,当框架版本为'v4.0'时,它为我提供了SDK v10.0A的路径,而不是预期的v8.0A。

有关如何在SDK中获取正确版本的mage.exe的任何想法吗?

0 个答案:

没有答案