2016-04-04 17 views
1

Visual Studio 9.0 yüklü var, ancak PowerShell'den manuel olarak kullanmak istiyorum. İki kurulum betiği ile gelir: 32 bit derleyici için vcvars32.bat ve 64 bit derleyici için vcvars64.bat. cmd.exe'u açıp komut dosyalarından birini çalıştırdığımda, her şey iyi ayarlanmış ve cl.exe'u sorunsuz çalıştırabilirim. PowerShell'den bu kurulum komut dosyalarından birini çalıştırdığımda, işe yaramıyor. Komut dosyaları iyi çalışır ancak cl.exe'u çalıştırmaya çalıştıktan sonra "cl.exe bulunamadı" hatası veriyor! Ve kurulum komut dosyalarından birini çalıştırdıktan sonra PATH ortam değişkeninin içeriğine bakarak, PATH'un aslında hiç değiştirilmediğini görebiliyorum.Visual Studio ortam değişkenlerini PowerShell'den kurma

Öyle görünüyor ki, toplu iş dosyaları PowerShell'den çalıştırılıyorsa, toplu iş dosyasının sona erdiği anda gider olan kendi ortam değişkenleri durumunu koruyor gibi görünüyor. Öyleyse, PowerShell'den toplu dosyaları çalıştırmak için bir yol var ve bu toplu iş dosyaları geçerli PowerShell oturumunun gerçek ortam değişkenlerini etkiliyor mu? Çünkü ihtiyacım olan şey bu. Tüm bu vcvars32.bit ve vcvars64.bit tarafından yapılır, hepsi sonra ortam değişkenleri ayarlıyor ancak sadece PowerShell'den değil, cmd.exe'dan çalışıyor gibi görünüyor.

cevap

2

Bunu geride kalan InvokeEnvironment senaryoyu kullanmalısınız:

set PATH=%PATH%;C:\some\where 
set FOO=bar 

$env:Path += ';C:\some\where' 
$env:FOO = 'bar' 

sizin PowerShell oturumunda dosyasını bir .ps1 dosyası ve nokta-kaynağına çevrilmiş tanımları yaz olur . onun erkek sayfasını kontrol:

Invoke-Environment <path_to_>vsvars32.bat 

Sen furhter OS bitleri belirlenmesi ve vsvars<OsBits>.bat işçiliği ile bu genelleme yapabiliriz.

Örnek:

PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> $env:INCLUDE -eq $null 
PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> $true 
PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> Invoke-Environment .\vsvars32.bat 
PS C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools> $env:INCLUDE 
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\winrt; 
+0

Teşekkürler, ama işe yaramaz. 'README.md' bölümünde açıklandığı gibi profilime ekledim ancak yine de 'Invoke-Environment' komutunu bulamıyor. Komut dosyasını tam olarak nitelenmiş bir yol kullanarak çağırırken, komut dosyasını bulur ancak çıktı olarak aktardığım toplu iş komut dosyasını çalıştırıyor gibi görünmüyor, çünkü çıktı yok ve ortam değişkenlerini doğru şekilde ayarlamıyor. – Andreas

+0

Bunların hepsini yapmak zorundasınız.Sadece aktif kabuktaki işlevi kopyala/yapıştır. İşe yarayan projelerin sayısını bu yüzden kullandım. Değişkenin mevcut olup olmadığını kontrol etmek için bir çıktı yoktur. $ Env: – majkinetor

+0

Hala çalışmıyor. Örneğinizde 'VS100COMNTOOLS' nedir? Bu bir ortam değişkeni mi? Burada ayarlanmamış. 'VsvarsXXX.bat' komut dosyaları burada 'C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ bin' dizinindedir. – Andreas

0

Visual Studio'yu elimde yok, ancak toplu komut dosyaları büyük olasılıkla geçerli oturum için değişkenleri ayarlıyor. Onları PowerShell'den çalıştırmak size iyi gelmeyecektir, çünkü bunlar bir çocuk CMD işleminde başlatılacak ve bu işlemin işlem ortamını değiştirecek, ancak ana (PowerShell) sürecini değiştirmeyeceklerdir.

Değişken tanımlarını PowerShell'e çevirmeniz gerektiğinden şüpheleniyorum, ör.

. C:\path\to\vcvars.ps1 
+0

Hmm, PowerShell için olanlar toplu komut dosyalarını yeniden Ben önlemek istiyorum kurs şey olduğunu. PowerShell ortam değişkenleri arasında değişiklik yapabilmek için PowerShell bağlamında bir toplu iş komut dosyası çalıştırmanın gerçekten bir yolu yok mu? – Andreas

+0

Ben öyle düşünmüyorum. –

+0

Bu mümkündür. Yanıtımı kontrol edin – majkinetor

İlgili konular