Работа с путями в msbuild
Я пытаюсь настроить виртуальный каталог с помощью msbuild и задач сообщества msbuild, но не могу найти способ указать относительный путь за пределами $(MSBuildStartupDirectory)
,
Мой проект структурирован так:
c: \ proj \ src \ website (это место, на которое должен указывать виртуальный каталог) build\ build.proj (это файл msbuild)
Что я хотел бы сделать, это что-то вроде этого (обратите внимание, что $(MSBuildStartupDirectory)
указывает на c:\proj\build
):
<WebDirectoryCreate
VirtualDirectoryName="website"
VirtualDirectoryPhysicalPath="$(MSBuildStartupDirectory)\..\src\website" />
К сожалению, это не работает - ".." не разрешается, и виртуальный каталог указывает на c:\proj\build\..\src\website
,
Может кто-нибудь подсказать мне, как работать с (относительными) путями в msbuild?
1 ответ
Я попробовал это, и это работало хорошо для меня. Я проверил это на 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>