我编写了一个自定义 MSBuild 任务,它调用SubWCRev.exe
,一个可执行文件(通常)驻留在C:\Program Files\TortoiseSVN\bin
,无论是 32 位还是 64 位,因为 TortoiseSVN 提供这两个版本。
问题是,Visual Studio 2010 只有 32 位版本。因此,当我的同事使用 64 位机器尝试使用我闪亮的新任务进行构建时,$(ProgramFiles)
决心C:\Program Files(x86)
它爆炸说SubWCRev.exe
找不到。因为他们有 64 位版本的 TortoiseSVN,它位于C:\Program Files
!
有没有比硬编码更好的解决方案C:\Program Files
在我的 msbuild 脚本中,或者让每个人都使用 32 位版本的 TortoiseSVN? (实际上这是一个C#项目,我稍微修改了MSBuild代码)
看看这个:
<Project ToolsVersion="4.0" DefaultTargets="PrintValues" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PrintValues">
<PropertyGroup>
<MyProgramFiles>$(ProgramW6432)</MyProgramFiles>
<MyProgramFiles Condition="$(MyProgramFiles) == ''">$(ProgramFiles)</MyProgramFiles>
</PropertyGroup>
<Message Text="MyProgramFiles: $(MyProgramFiles)"/>
</Target>
</Project>
这让MyProgramFiles
对于 32 位和 64 位 Windows,解析为“C:\Program Files”(ProgramW6432
在非 64 位版本的 Windows 上环境变量为空)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)