我正在尝试使用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中使用(相对)路径吗?
答案 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>