我想运行一个预编译目标,我正在编写csproj。这需要运行tlbimp来生成我的项目引用的dll。
我正在尝试执行tlbimp,但是我遇到了无法找到的错误。是否有一个msbuild变量或环境变量我可以使用它推导出它的路径?
答案 0 :(得分:1)
可能没有直接变量,但您可以使用一些内置变量来构造路径。在我的机器上,我在多个位置都有tlbim.exe:
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ TlbImp.exe
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ TlbImp.exe
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 \ TlbImp.exe
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64 \ TlbImp.exe
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ TlbImp.exe
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64 \ TlbImp.exe
C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ TlbImp.exe
C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ TlbImp.exe
我可以使用Windows默认环境变量将我想要的Tlbim.exe用于“C:\ Program files”文件夹:
“%ProgramFiles(x86)%\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64 \ Tlbimp.exe”
在Msbuild项目中,你必须使用$(var)而不是%var%,所以它应该是这样的:
“$(ProgramFiles(x86))\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64 \ Tlbimp.exe”
希望你明白了......
答案 1 :(得分:1)
使用MSBuild 12(VS2013),
$(TargetFrameworkSDKToolsDirectory)
指向
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\
即。 tlbimp.exe
位于
"$(TargetFrameworkSDKToolsDirectory)tlbimp.exe"