SORU
7 EKİM 2008, Salı


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
9 AĞUSTOS 2009, Pazar


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Helder Barreto

    Helder Barre

    22 Mayıs 2006
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006