不同版本的Visual Studio上的相同构建事件

时间:2017-09-12 15:16:59

标签: c# visual-studio msbuild

我检查了一个来自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上使用相同的构建事件?提前谢谢。

2 个答案:

答案 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中运行良好:

enter image description here

enter image description here