我检查了一个来自TFS的项目,该项目由我的同事在visual studio 2013上创建。这个项目有一个构建事件事件,它从路径“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
”调用.exe
但是,我正在使用Visual Studio 2017(不安装visual studio 2013),.exe的路径已更改为其他路径。所以我需要在构建命令行中更改路径。当我将代码提交给TFS时,我的代码在2013年的visual studi中无法被其他人使用。
所以我的问题是如何在不同版本的Visual Studio上使用相同的构建事件?提前谢谢。
答案 0 :(得分:0)
您可以启动一个Powershell脚本来计算工具的位置,例如
"%windir%\System32\WindowsPowerShell\v1.0\powershell.exe" -file "$(SolutionDir)myscript.ps1"
脚本本身沿着这一行
function Get-VisualStudioInstallDir
{
if ($env:ProgramW6432) {
# 64 bit
$registryBase = "HKLM:\SOFTWARE\Wow6432Node\Microsoft"
} else {
# 32 bit
$registryBase = "HKLM:\SOFTWARE\Microsoft"
}
if (Test-Path "$registryBase\VisualStudio") {
$highestVSversion = "{0:N1}" -f (Get-ChildItem -Path "$registryBase\VisualStudio" | Split-Path -Leaf | foreach { $_ -as [double] } | sort -Descending | select -First 1)
$vsPath = Get-ItemProperty -Path "$registryBase\VisualStudio\$highestVSversion" -Name InstallDir -ErrorAction SilentlyContinue
if ($vsPath) {
$vsPath.InstallDir
}
}
}
$tf= Join-Path (Get-VisualStudioInstallDir) -ChildPath 'tf.exe'
& $tf /help
答案 1 :(得分:0)
不同版本Visual Studio上的相同构建事件
如果我理解你是正确的,那么当您在不同版本的VS上使用构建事件时,您不希望来回切换到被调用.exe的路径。我对吗?
正如汉斯所说,你不能在不同版本的Visual Studio上使用相同的构建事件,但我想提供一种解决方法,你可以检查它是否是你想要的:
您可以在构建事件中使用“1
”的属性来选择.exe 的不同路径。在Visual Studio 2013中,VisualStudioVersion
的值为VisualStudioVersion
。在Visual Studio 2017中,值为12.0
。因此详细构建事件应如下所示:
15.0
由于您未提供该exe的详细路径,因此我使用以下脚本创建了测试示例:
if "$(VisualStudioVersion)" == "12.0" (cell YourExePath="ThePathOfExeInVS2013\Your.exe")
if "$(VisualStudioVersion)" == "15.0" (cell YourExePath="ThePathOfExeInVS2017\Your.exe")
它在Visual Studio 2017和2013中运行良好: