使用msbuild中的路径

时间:2011-01-04 10:43:34

标签: msbuild msbuildcommunitytasks

我正在尝试使用msbuild和msbuild社区任务设置虚拟目录,但无法找到如何指定$(MSBuildStartupDirectory)之外的相对路径的方法。

我的项目结构如下:

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

我想做的是这样的(注意$(MSBuildStartupDirectory)指向c:\proj\build):

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

不幸的是,这不起作用 - '..'未解决,然后虚拟目录指向c:\proj\build\..\src\website

有人能指出我如何在msbuild中使用(相对)路径吗?

1 个答案:

答案 0 :(得分:3)

我试过了,它对我来说很好。我在Windows XP上使用msbuild 4.0和社区任务版本1.3.0.504进行了测试。

我通常使用MSBuildProjectDirectory,因为MSBuildStartupDirectory可能指向其他位置,具体取决于msbuild的执行方式。

以下示例将创建网站,并使用FullPath元数据从路径中删除..条目。

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