2012-08-16 20 views
10

MSBuild'e bir özellik iletmeye çalışıyorum. Özellik, noktalı virgülle ayrılmış değer listesidir. this question'dan farklı olarak, PowerShell'den MSBuild çalıştırıyorum.PowerShell'den çalıştırırken MSBuild komut satırında noktalı virgül içeren bir özellik değerini nasıl geçirebilirim?

alıyorum: Ben komut isteminden Aynı komutu çalıştırırsanız

PS> msbuild .\Foo.sln /p:PackageSources="\\server\NuGet;E:\NuGet" 

MSBUILD : error MSB1006: Property is not valid. 
Switch: E:\NuGet 

, iyi çalışıyor. PowerShell'de çalışmaya nasıl başlarım?

+0

Noktalı virgülün ön tarafındaki geri çekme kaçış karakterini (" '") kullanmayı deneyin. O dizgede diğer karakterler de olabilir. – David

+2

Backtick çalışmıyor - sorun MSBuild'in beklediği/p: PropA = ValA; PropB = ValB. Noktalı virgül, PowerShell'den değil, MSBuild'den 'kaçmayı' gerektirir. Tırnakların eklenmesi bunu düzeltmelidir, ancak PoSh komut satırını geçerken onları dışarı çeker. –

cevap

17

Wrap tek tırnak içindeki parametre: PowerShell üzerinde

... '/p:PackageSources="\\Server\NuGet;E:\NuGet"' 

bu deneyin v3:

msbuild .\Foo.sln --% /p:PackageSources="\\Server\NuGet;E:\NuGet" 
+0

v3'ü kontrol edemiyorum (PowerShell konsol ayarlarım bozulduğunda kaldırıldı - yazı tipi, renkler, boyut), ancak fazladan tek tırnak işareti çalışır. –

-1

VBScript işlevi aşağıda özellik değerleri geçirilen kaçmak için kullanılabilir MSBuild.exe çift ​​tırnak içinde:

Aşağıdaki örnek Escape() işlev kullanımı

Set objShell = WScript.CreateObject("WScript.Shell")   
    objShell.Run "msbuild.exe echo.targets /p:Param1=""" & Escape("ParamValue1") & """,Param2=""" & Escape("ParamValue1") & """", 1, True 
+0

Bu cevabın yaşayabileceği bir soru sormalısınız (ve kendi kendine cevap verin). PowerShell ile ilgisi yok. –

0

Ayrıca kullanılarak ASCII değeri yardımcı olabilir gösterir.

msbuild \ Foo.sln/s: PackageSources = "\ sunucu \ Nuget% 3BE : \ NuGet "

+0

Merhaba, oldukça eski bir soruya cevap veriyorsunuz. Cevabınızın neden temin edilmiş olanlardan daha iyi olduğunu açıklayabilir misiniz? –

+2

Elbette. Bu durumda, senaryonu değiştirmene gerek yok, bu sadece bir fark. Bu aslında benim sorunumdu - yapıyı tetikleyen dağıtım eklentisini kullanıyordum. Ve eklentinin koduna dokunmaya izin verilmediğinden, bu daha uygun bir şekilde çözüldü. –

+0

Serin! Bir dahaki sefere bu metni doğrudan gelecekteki bir okuyucunun kolayca bulunabileceği postunuza (edit) ekleyeceğim. Bunu hala yapabilirsin (tavsiye ederim). –

İlgili konular