Найти родительский каталог MSBuildProjectDirectory - PullRequest
11 голосов
/ 05 февраля 2009

MSBuild 3.5

У меня есть следующая структура проекта:

trunk/MainSolution.sln
trunk/Build/MyBuild.Proj
trunk/Library/...
trunk/etc...

До сих пор я использовал следующее свойство для определения корневой папки проекта:

<RootFolder>$(MSBuildProjectDirectory)\..\</RootFolder>

Все работало отлично, пока я не попытался использовать задачу копирования, которая основывалась на этом пути. Это не решает правильно. Я в итоге получаю что-то вроде этого, что недопустимо:

C:\Projects\MyProject\Trunk\Build\..\CodeAnalysis\myfile.xml

Итак, мне нужно получить полный путь к родительскому элементу (MSBuildProjectDirectory).

1 Ответ

16 голосов
/ 05 февраля 2009

Метаданные товара - ваш друг!

<Target Name="GetMSBuildProjectParentDirectory">
  <!-- First you create the MSBuildProject Parent directory Item -->
  <CreateItem Include="$(MSBuildProjectDirectory)\..\">
    <Output ItemName="MSBuildProjectParentDirectory" TaskParameter="Include"/>
  </CreateItem>

  <!-- You can now retrieve its fullpath using Fullpath metadata -->
  <Message Text="%(MSBuildProjectParentDirectory.Fullpath)"/>

  <!-- Create a property based on parent fullpath-->
  <CreateProperty Value="%(MSBuildProjectParentDirectory.Fullpath)">
    <Output PropertyName="CodeFolder" TaskParameter="Value"/>
  </CreateProperty>
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...