>

devenv.exe 를 사용하여 Visual Studio 솔루션을 빌드하는 스크립트를 실행해야합니다.  (또는 devenv.com  그 문제에 대한). Visual Studio 2015의 경우 환경 변수 %VS140COMNTOOLS% 가있었습니다.  devenv의 설치 위치를 찾는 데 사용할 수 있습니다. %VS150COMNTOOLS% 가 없기 때문에  Visual Studio 2017의 경우 , devenv 의 설치 위치를 찾는 신뢰할 수있는 방법은 무엇입니까?  스크립트 (bat 또는 powershell)로

  • 답변 # 1

    vswhere.exe 를 사용할 수 있습니다  또는 Visual Studio 인스턴스를 찾기위한 powershell :

    for /r "usebackq tokens=1* delims=: " %%i in (`vswhere.exe -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop`) do (
        if /i "%%i"=="installationPath" set dir=%%j
    )
    
    

    그리고

    Install-Module VSSetup -Scope CurrentUser
    Get-VSSetupInstance | Select-VSSetupInstance -Latest -Require Microsoft.VisualStudio.Component.VC.Tools.x86.x64
    
    

    이 API를 통해서도 특정 워크로드에 대한 경로를 찾을 수 있습니다.

    https://blogs.msdn.microsoft.com/vcblog/2017/03/06/finding-the-visual-c-compiler-tools-in-visual-studio-2017/

  • 답변 # 2

    한 가지 방법은 power shell 및 vswhere.exe를 사용하는 것입니다. 하지만 새 도구를 설치하기에는 게으르다 ...

    더 간단한 해결책을 찾고 레지스트리에서 찾았습니다. 레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7 가 있습니다. 모든 Visual Studio 설치가 표시됩니다.

    이 링크에 언급 된 제한 중 하나 : https://developercommunity.visualstudio.com/content/problem/2813/cant-find-registry-entries-for-visual-studio-2017.html

    2017 년 버전이 두 개 이상 설치되어 있으면 마지막에 설치된 버전이이 키에 경로가있는 것 같습니다.

    그러나 일반적으로 빌드 또는 사용 목적으로 하나의 Visual Studio 만 설치합니다.

    또한이 샘플을 64 비트 머신 관점에서 코딩했습니다. Wow6432Node  32 비트 머신에서 종료되지 않지만 실제로 요즘 얼마나 ​​많은 개발자가 32 비트 머신을 사용합니까?

    따라서 위의 제한 사항이 괜찮다면 다음은 Visual Studio 설치 경로를 쿼리 할 수있는 간단한 배치입니다.

    test.bat :
    @echo off
    setlocal 
    call:vs%1 2>nul
    if "%n%" == "" (
        echo Visual studio is not supported.
        exit /b
    )
    for /f "tokens=1,2*" %%a in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "%n%.0" 2^>nul') do set "VSPATH=%%c"
    if "%VSPATH%" == "" (
        echo Visual studio %1 is not installed on this machine
        exit /b
    )
    echo Visual studio %1 path is "%VSPATH%"
    endlocal & exit /b
    :vs2017
        set /a "n=%n%+1"
    :vs2015
        set /a "n=%n%+2"
    :vs2013
        set /a "n=%n%+1"
    :vs2012
        set /a "n=%n%+1"
    :vs2010
        set /a "n=%n%+10"
        exit /b
    
    

    다음과 같이 실행할 수 있습니다 :

    >test 2010
    Visual studio 2010 path is "C:\Program Files (x86)\Microsoft Visual Studio 10.0\"
    >test 2012
    Visual studio 2012 path is "C:\Program Files (x86)\Microsoft Visual Studio 11.0\"
    >test 2013
    Visual studio 2013 path is "C:\Program Files (x86)\Microsoft Visual Studio 12.0\"
    >test 2014
    Visual studio is not supported.
    >test 2015
    Visual studio 2015 path is "C:\Program Files (x86)\Microsoft Visual Studio 14.0\"
    >test 2017
    Visual studio 2017 path is "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\"
    
    

  • 답변 # 3

    다음은 DevEnv.exe 경로를 얻는 데 사용할 수있는 PowerShell 기능입니다. MsBuild.exe 와 같은 다른 일반적인 구성 요소를 찾기 위해 쉽게 수정할 수도 있습니다.  또는 TF.exe  단순히 하드 코딩 된 DevEnv.exe 를 변경하여   -Filter 에서 사용되는 문자열 .

    function Get-DevEnvExecutableFilePath
    {
        [bool] $vsSetupExists = $null -ne (Get-Command Get-VSSetupInstance -ErrorAction SilentlyContinue)
        if (!$vsSetupExists)
        {
            Write-Verbose "Importing the VSSetup module..."
            Install-Module VSSetup -Scope CurrentUser -Force
        }
        [string] $visualStudioInstallationPath = (Get-VSSetupInstance | Select-VSSetupInstance -Latest -Require Microsoft.Component.MSBuild).InstallationPath
        $devEnvExecutableFilePath = (Get-ChildItem $visualStudioInstallationPath -Recurse -Filter "DevEnv.exe" | Select-Object -First 1).FullName
        return $devEnvExecutableFilePath
    }
    
    

  • 답변 # 4

    여기서 레지스트리를 사용하는 자체 솔루션은 불행히도 Visual Studio 2019에서 작동하지 않습니다 .Uninstall 레지스트리 경로에서 vs2019 설치 경로를 쿼리 할 수는 있지만 필요한 경우 약간 어려워지기 시작합니다. 하위 레지스트리 키를 안내합니다.

    나는 또한 약간 vswhere.exe 를 시도했다 하지만 사용법도 약간 어렵습니다. 결과를 다시 분석해야합니다.

    그동안 vswhere 와 비슷한 것이 필요했습니다. , 구현에 대해 한 눈에 살펴보고 cppexec.exe 라는 자체 명령 줄 도구로 다시 작성했습니다. .

    사용법은 다음과 같습니다 :

    D:\Prototyping\cppscriptcore>cppexec.exe -location
    Visual studio 2019:
    location: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise
    Visual studio 2017:
    location: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise
    D:\Prototyping\cppscriptcore>cppexec.exe -location -vs 2017
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise
    D:\Prototyping\cppscriptcore>cppexec.exe -location -vs 2019
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise
    
    

    이 파일을 사용하려면 두 파일을 다운로드하십시오 :

    https://github.com/tapika/cppscriptcore/blob/master/cppexec.exe https://github.com/tapika/cppscriptcore/blob/master/SolutionProjectModel.dll

    자신의 프로젝트에 통합하려는 경우 다음 소스 코드를 살펴보십시오.

    https://github.com/tapika/cppscriptcore/blob/master/SolutionProjectModel/VisualStudioInfo.cpp https://github.com/tapika/cppscriptcore/blob/master/SolutionProjectModel/VisualStudioInfo.h

    vswhere 를 코딩했습니다  약간 더 간단한 방식으로.

관련 자료

  • 이전 swing - Java KeyPress가 감지되지 않습니다
  • 다음 javascript - 숫자 0을 짝수가 아닌 0으로 식별하는 방법