2011-01-04 9 views
0

Ich versuche, ein virtuelles Verzeichnis mit Msbuild und die Msbuild-Community-Aufgaben einzurichten, kann aber keinen Weg finden, einen relativen Pfad anzugeben, der außerhalb der $(MSBuildStartupDirectory) ist.Arbeiten mit Pfaden in Msbuild

Mein Projekt wie dieses aufgebaut ist:

 
c:\proj\ 
    src\ 
    website  (this is where the virtual dir should point to) 
    build\ 
    build.proj  (this is the msbuild file) 

Was ich möchte, ist so etwas tun (beachten Sie, dass $(MSBuildStartupDirectory) Punkte c:\proj\build):

<WebDirectoryCreate 
    VirtualDirectoryName="website" 
    VirtualDirectoryPhysicalPath="$(MSBuildStartupDirectory)\..\src\website" /> 

Leider ist dieses nicht Arbeit - das '..' wird nicht aufgelöst und das virtuelle Verzeichnis zeigt dann auf c:\proj\build\..\src\website.

Kann mir jemand einen Hinweis geben, wie man mit (relativen) Pfaden in Msbuild arbeitet?

Antwort

3

Ich habe das versucht und es hat gut für mich gearbeitet. Ich habe dies unter Windows XP mit Msbuild 4.0 und Community-Aufgaben Version 1.3.0.504 getestet.

Ich verwende normalerweise MSBuildProjectDirectory, da MSBuildStartupDirectory möglicherweise anderswo zeigen kann, je nachdem, wie msbuild ausgeführt wurde.

Im folgenden Beispiel wird die Website erstellt und die Einträge aus dem Pfad mithilfe der FullPath-Metadaten entfernt.

<ItemGroup> 
    <WebPath Include="$(MSBuildProjectDirectory)\..\src\website" /> 
</ItemGroup> 
<Target Name="CreateWeb"> 
    <Message Text="[email protected](WebPath)" Importance="high" /> 
    <Message Text="FullPath=%(WebPath.FullPath)" Importance="high" /> 
    <WebDirectoryCreate 
     VirtualDirectoryName="website" 
     VirtualDirectoryPhysicalPath="%(WebPath.FullPath)" /> 
</Target>