How to Open Visual Studio 2015 Command Prompt
Bagaimana cara menggunakan PowerShell dengan Visual Studio Command Prompt?
Saya telah menggunakan Beta 2 untuk sementara waktu sekarang dan itu membuat saya gila bahwa saya harus memutar ke cmd.exe saat menjalankan Command Prompt VS2010. Saya dulu memiliki skrip vsvars2008.ps1 yang bagus untuk Visual Studio 2008. Ada yang punya vsvars2010.ps1 atau yang serupa?
Jawaban:
Mencuri secara bebas dari sini: http://allen-mack.blogspot.com/2008/03/replace-visual-studio-command-prompt.html , saya bisa membuatnya bekerja. Saya menambahkan yang berikut ini ke profile.ps1 saya dan semuanya baik-baik saja dengan dunia.
pushd 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC' cmd / c "vcvarsall.bat&set" | foreach { if ( $_ - match "=" ) { $v = $_ . split ( "=" ); set - item - force - path "ENV:\$($v[0])" - value "$($v[1])" } } popd write - host "`nVisual Studio 2010 Command Prompt variables set." - ForegroundColor Yellow
Ini telah bekerja dengan baik selama bertahun-tahun - hingga Visual Studio 2015. vcvarsall.bat tidak ada lagi. Sebagai gantinya, Anda dapat menggunakan file vsvars32.bat, yang terletak di folder Common7 \ Tools.
pushd 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools' cmd / c "vsvars32.bat&set" | foreach { if ( $_ - match "=" ) { $v = $_ . split ( "=" ); set - item - force - path "ENV:\$($v[0])" - value "$($v[1])" } } popd write - host "`nVisual Studio 2015 Command Prompt variables set." - ForegroundColor Yellow
Hal-hal telah berubah lagi untuk Visual Studio 2017. vsvars32.bat
tampaknya telah dibatalkan VsDevCmd.bat
. Jalur persisnya mungkin berbeda-beda bergantung pada edisi Visual Studio 2017 yang Anda gunakan.
pushd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools" cmd / c "VsDevCmd.bat&set" | foreach { if ( $_ - match "=" ) { $v = $_ . split ( "=" ); set - item - force - path "ENV:\$($v[0])" - value "$($v[1])" } } popd Write - Host "`nVisual Studio 2017 Command Prompt variables set." - ForegroundColor Yellow
Opsi paling sederhana adalah menjalankan command prompt VS 2010 dan kemudian menjalankan PowerShell.exe. Jika Anda benar-benar ingin melakukan ini dari prompt PowerShell "rumah", pendekatan yang Anda tunjukkan adalah cara yang tepat. Saya menggunakan skrip yang ditulis Lee Holmes beberapa waktu lalu:
<# . SYNOPSIS Invokes the specified batch file and retains any environment variable changes it makes . . DESCRIPTION Invoke the specified batch file ( and parameters ), but also propagate any environment variable changes back to the PowerShell environment that called it . . PARAMETER Path Path to a . bat or . cmd file . . PARAMETER Parameters Parameters to pass to the batch file . . EXAMPLE C : \PS > Invoke - BatchFile "$env:VS90COMNTOOLS\..\..\vc\vcvarsall.bat" Invokes the vcvarsall . bat file to set up a 32 - bit dev environment . All environment variable changes it makes will be propagated to the current PowerShell session . . EXAMPLE C : \PS > Invoke - BatchFile "$env:VS90COMNTOOLS\..\..\vc\vcvarsall.bat" amd64 Invokes the vcvarsall . bat file to set up a 64 - bit dev environment . All environment variable changes it makes will be propagated to the current PowerShell session . . NOTES Author : Lee Holmes #> function Invoke - BatchFile { param ([ string ] $Path , [ string ] $Parameters ) $tempFile = [ IO . Path ]:: GetTempFileName () ## Store the output of cmd.exe. We also ask cmd.exe to output ## the environment table after the batch file completes cmd . exe / c " `" $Path `" $Parameters && set > `"$tempFile`" " ## Go through the environment variables in the temp file. ## For each of them, set the variable in our local environment. Get-Content $tempFile | Foreach-Object { if ($_ -match " ^(.*?)=(.*) $ ") { Set-Content " env : \$ ( $matches [ 1 ]) " $matches[2] } } Remove-Item $tempFile }
Catatan: fungsi ini akan tersedia dalam rilis berbasis modul PowerShell Community Extensions 2.0 segera.
Saya menemukan metode sederhana di sini : ubah pintasan.
Pintasan aslinya adalah seperti ini:
% comspec % / k "" C : \Program Files ( x86 ) \Microsoft Visual Studio 12.0 \Common7\Tools\VsDevCmd . bat ""
Tambahkan & powershell
sebelum kutipan terakhir, seperti ini:
% comspec % / k "" C : \Program Files ( x86 ) \Microsoft Visual Studio 12.0 \Common7\Tools\VsDevCmd . bat " & powershell"
Jika Anda ingin membuatnya terlihat lebih seperti PS, buka tab Warna pada properti pintasan dan atur nilai Merah, Hijau, dan Biru menjadi 1, 36 dan 86.
Sebuah pertanyaan lama tetapi layak untuk dijawab dengan (a) memberikan dukungan VS2013; (b) menggabungkan yang terbaik dari dua jawaban sebelumnya; dan (c) menyediakan pembungkus fungsi.
Ini dibangun di atas teknik @ Andy (yang dibangun di atas teknik Allen Mack seperti yang ditunjukkan Andy (yang kemudian dikembangkan dari teknik Robert Anderson seperti yang ditunjukkan Allen (semuanya memiliki sedikit kesalahan seperti yang ditunjukkan di halaman ini oleh pengguna yang hanya dikenal sebagai "saya) - ", jadi saya memperhitungkannya juga))).
Ini adalah kode terakhir saya - perhatikan penggunaan pembilang non-serakah di regex untuk menangani kemungkinan yang sama yang disematkan dalam nilainya. Itu juga terjadi untuk menyederhanakan kode: satu kecocokan, bukan kecocokan, lalu pisahkan seperti pada contoh Andy atau kecocokan lalu indeks dan substring seperti dalam contoh "saya -").
function Set - VsCmd { param ( [ parameter ( Mandatory , HelpMessage = "Enter VS version as 2010, 2012, or 2013" )] [ ValidateSet ( 2010 , 2012 , 2013 )] [ int ] $version ) $VS_VERSION = @{ 2010 = "10.0" ; 2012 = "11.0" ; 2013 = "12.0" } $targetDir = "c:\Program Files (x86)\Microsoft Visual Studio $($VS_VERSION[$version])\VC" if (!( Test - Path ( Join - Path $targetDir "vcvarsall.bat" ))) { "Error: Visual Studio $version not installed" return } pushd $targetDir cmd / c "vcvarsall.bat&set" | foreach { if ( $_ - match "(.*?)=(.*)" ) { Set - Item - force - path "ENV:\$($matches[1])" - value "$($matches[2])" } } popd write - host "`nVisual Studio $version Command Prompt variables set." - ForegroundColor Yellow }
Keith telah menyebutkan PowerShell Community Extensions (PSCX), dengan Invoke-BatchFile
perintahnya:
Invoke - BatchFile "${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
Saya juga memperhatikan bahwa PSCX juga memiliki Import-VisualStudioVars
fungsi:
Import - VisualStudioVars - VisualStudioVersion 2013
Kudos to Andy S untuk jawabannya. Saya telah menggunakan solusinya untuk sementara waktu, tetapi mengalami masalah hari ini. Nilai apa pun yang memiliki tanda sama dengan di dalamnya dipotong pada tanda sama dengan. Misalnya, saya punya:
JAVA_TOOL_OPTIONS =- Duser . home = C : \Users\Me
Tetapi sesi PS saya melaporkan:
PS C : \> $env : JAVA_TOOL_OPTIONS - Duser . home
Saya memperbaikinya dengan mengubah skrip profil saya menjadi yang berikut:
pushd 'c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC' cmd / c "vcvarsall.bat&set" | foreach { if ( $_ - match "=" ) { $i = $_ . indexof ( "=" ) $k = $_ . substring ( 0 , $i ) $v = $_ . substring ( $i + 1 ) set - item - force - path "ENV:\$k" - value "$v" } } popd
Untuk seseorang yang masih berjuang dengan itu di tahun 2020 dan Visual Studio Code 1.41.1, jadi sedikit keluar dari topik di sini.
Menggunakan semua bagian kode yang berbeda dari atas dan Internet misalnya dari https://help.appveyor.com/discussions/questions/18777-how-to-use-vcvars64bat-from-powershell dan dengan pendekatan langkah demi langkah saya berhasil memiliki skrip di bawah ini berfungsi.
Disimpan ke VSCode "settings.json" dan dengan ekstensi Code Runner diinstal.
Dengan Microsoft (R) C / C ++ Optimizing Compiler Version "cl.exe" dari Visual Studio 2015 / 14.0:
"code-runner.runInTerminal" : true , "code-runner.executorMap" : { "cpp" : "cd $dir; pushd \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\"; cmd.exe /c \"call vcvarsall.bat x86_amd64 & set > %temp%\\vcvars.txt\"; Get-Content \"$env:temp\\vcvars.txt\" | Foreach-Object { if ($_ -match \"^(.*?)=(.*)$\") { Set-Content \"env:\\$($matches[1])\" $matches[2] }}; popd; cls; cl *.cpp; .\\\"$fileNameWithoutExt.exe\"; Write-Host -NoNewLine 'Press any key to continue...'; $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); del \"$fileNameWithoutExt.exe\"; del \"$fileNameWithoutExt.obj\"" }
Dengan Microsoft (R) C / C ++ Mengoptimalkan Versi Kompilator "cl.exe" dari Visual Studio 2019 / 16.4.3:
"code-runner.runInTerminal" : true , "code-runner.executorMap" : { "cpp" : "cd $dir; pushd \"c:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\"; cmd.exe /c \"call vcvarsall.bat x86_amd64 & set > %temp%\\vcvars.txt\"; Get-Content \"$env:temp\\vcvars.txt\" | Foreach-Object { if ($_ -match \"^(.*?)=(.*)$\") { Set-Content \"env:\\$($matches[1])\" $matches[2] }}; popd; cls; cl *.cpp; .\\\"$fileNameWithoutExt.exe\"; Write-Host -NoNewLine 'Press any key to continue...'; $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); del \"$fileNameWithoutExt.exe\"; del \"$fileNameWithoutExt.obj\"" }
HTH
Saya suka meneruskan perintah ke cangkang anak seperti ini:
cmd / c "`" $ { env : VS140COMNTOOLS } vsvars32 . bat `" && <someCommand>"
Atau sebaliknya
cmd / c "`" $ { env : VS140COMNTOOLS }.. \. . \VC\vcvarsall . bat `" amd64 && <someCommand> && <someOtherCommand>"
How to Open Visual Studio 2015 Command Prompt
Source: https://qastack.id/programming/2124753/how-can-i-use-powershell-with-the-visual-studio-command-prompt
0 Response to "How to Open Visual Studio 2015 Command Prompt"
Post a Comment