使用 MsBuild (VS2015) 构建期间 TlbExp/TlbImp 的路径

Path to TlbExp/TlbImp during build with MsBuild (VS2015)

我切换了一些解决方案,以便在只有 VS2015 和构建代理的干净构建机器上使用最新的框架和工具集进行构建。

对于所有 vc 项目,路径变量 "TargetFrameworkSDKToolsDirectory" 符合我的需要。它看起来像这样:

"$(TargetFrameworkSDKToolsDirectory)tlbimp.exe" $(TargetPath) /verbose /strictref /asmversion=$(Version) /out:$(DropLocation)

但是对于 c# 项目我找不到任何解决方案。以前的解决方案如下所示:

"$(WindowsSDKDir)\bin\NETFX 4.0 Tools\tlbexp" $(TargetPath) /out:$(ProjectDir)\bin$(ConfigurationName)$(TargetName).tlb

但构建机器不知道 "WindowsSDKDir" 或 "FrameworkSDKdir",我希望尽可能少地进行自定义。

我无法想象我是唯一一个遇到这个问题的人,所以我希望找到一个已经解决了这个问题的人。

我正在使用:

call "$(VS140COMNTOOLS)vsvars32.bat" 
tlbexp.exe "$(TargetPath)" /out:"$(SolutionDir)CommonFiles$(TargetName).tlb"

这不仅在 Visual Studio 内部有效,而且如果您使用 msbuild 构建...

我不推荐使用:

call "$(DevEnvDir)..\Tools\vsvars32.bat"

因为它只能在 Visaul Stuio 中工作,但会在 msbuild 中失败...

确保您已经安装了 Windows SDK(Visual Studio 的一部分)。

我发现满足我需求的最佳解决方案是,在构建机器上安装 Windows SDK,并对 C# 和 C++ 项目使用 TargetFrameworkSDKToolsDirectory。