使用 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。
我切换了一些解决方案,以便在只有 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。