Nasıl göreli bir yol verildiğinde değerlendirmek ve tam yolunu yazdırmak için MSBUİLD alabilir miyim?
Nasıl değerlendirmek ve <Message />
bir görev baskı göreli bir yol verilmiş mutlak bir yol MSBuild alabilir miyim?
Emlak Grubu
<Source_Dir>..\..\..\Public\Server\</Source_Dir>
<Program_Dir>c:\Program Files (x86)\Program\</Program_Dir>
Görev
<Message Importance="low" Text="Copying '$(Source_Dir.FullPath)' to '$(Program_Dir)'" />
Çıktı
"'C:\Program Dosyaları (x 86) Program\\' . kopyalama
CEVAP
MSBuild 4.0en kolay yolu şudur:
$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\your\path'))
Bu yöntem, komut dosyası bir komut dosyası içine <Import>
ed değilse bile çalışır; yolu dosya yukarıdaki kodu içeren göredir.
(Aaron's answer Sayed's answer son bölümünü konsolide)
MSBuild 3.5yapabilirsiniz ConvertToAbsolutePath görev kullanın:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Test"
ToolsVersion="3.5">
<PropertyGroup>
<Source_Dir>..\..\..\Public\Server\</Source_Dir>
<Program_Dir>c:\Program Files (x86)\Program\</Program_Dir>
</PropertyGroup>
<Target Name="Test">
<ConvertToAbsolutePath Paths="$(Source_Dir)">
<Output TaskParameter="AbsolutePaths" PropertyName="Source_Dir_Abs"/>
</ConvertToAbsolutePath>
<Message Text='Copying "$(Source_Dir_Abs)" to "$(Program_Dir)".' />
</Target>
</Project>
İlgili çıkış:
Project "P:\software\perforce1\main\XxxxxxXxxx\Xxxxx.proj" on node 0 (default targets).
Copying "P:\software\Public\Server\" to "c:\Program Files (x86)\Program\".
Biraz bana sorarsan, ama işe yararsa uzun soluklu. Bu "orijinal varsa <Import>
ed aldığı bir dosya içine yerleştirilen bu dosya. göreceli olmayacak kadar" proje dosyası, göreli olacaktır.
MSBuild 2.0, çözmek değildir, bir yaklaşım var"". .. Ancak tam bir yol gibi davranır.
<PropertyGroup>
<Source_Dir_Abs>$(MSBuildProjectDirectory)\$(Source_Dir)</Source_Dir_Abs>
</PropertyGroup>
$(MSBuildProjectDirectory) ayrılan özelliği her zaman bu referans içeren bir komut dizinidir.
Bu da "orijinal varsa <Import>
ed aldığı bir dosya içine yerleştirilen bu dosya. göreceli olmayacak kadar" proje dosyası, göreli olacaktır.
Nasıl MSBUİLD benim için MSDEPLOY çalı...
Nasıl otomatik olarak dışarı Gıt sürüm...
Nasıl bir dize dönüştürmek için yığın ...
Nasıl, asenkron yerine senkron AJAX is...
Nasıl haftanın başlangıç için DateTime...