0

我正在尝试使用 msbuild 和 msbuild 社区任务设置虚拟目录,但找不到如何指定$(MSBuildStartupDirectory).

我的项目结构如下:

c:\项目\
  源\
    网站(这是虚拟目录应该指向的地方)
  建造\
    build.proj(这是 msbuild 文件)

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

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

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

谁能给我一个提示如何在 msbuild 中使用(相对)路径?

4

1 回答 1

3

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

我通常使用 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>
于 2011-01-04T15:17:06.590 回答