2010-04-20 3 views
1

не могу понять, как получить последнюю часть

$ (MSBuildProjectDirectory)

Например, если значение было «C: \ развитие \ projects \ project_branch " , тогда я хочу только последнюю часть" project_branch ".

Любые идеи?

Спасибо,

Шон

+0

Для чего вы пытаетесь использовать это значение? –

+0

Хотите развернуть двоичные файлы для филиалов в местоположении, которое организует папки по имени филиала. Так что самое близкое, не обращаясь к подрывной деятельности, похоже, является именем папки, где находится наш файл msbuild. Существует задача развертывания, которую мы используем для автоматизированной ночной сборки, поэтому задача состоит в том, чтобы добавить задачу развертывания для ветки. – Sean

ответ

2
<Project DefaultTargets="BuildAll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <Target Name="GetMSBuildProjectLocalDirectory"> 
     <CreateItem Include="$(MSBuildProjectDirectory)"> 
      <Output ItemName="MSBuildProjectDirectoryMeta" TaskParameter="Include"/> 
     </CreateItem> 
     <CreateProperty Value="%(MSBuildProjectDirectoryMeta.Filename)"> 
      <Output PropertyName="LocalDirectory" TaskParameter="Value"/> 
     </CreateProperty> 
    </Target> 

    <Target Name="BuildAll" DependsOnTargets="GetMSBuildProjectLocalDirectory"> 
     <Message Text="$(LocalDirectory)" /> 
    </Target> 

</Project> 
4

В 4.0+ вы можете использовать функции объектов, чтобы сделать это в одной строке.

В этом случае, например, $ ([System.IO.Path] :: GetDirectoryName ($ (MSBuildProjectDirectory)))

или вы могли бы использовать функцию String.

0

Если вы следовали лучшей практике, то ваша папка проекта будет иметь то же имя, что и файл вашего проекта. Поэтому вы должны уметь использовать:

$(MSBuildProjectName)