Работа с путями в 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>
Другие вопросы по тегам