如何获取$的最后一部分(MSBuildProjectDirectory)

时间:2010-04-20 20:53:00

标签: msbuild msbuild-task msbuildcommunitytasks

无法弄清楚如何获得

的最后部分

$(MSBuildProjectDirectory)

例如,如果值为“c:\ development \ projects \ project_branch” 那么,我只想要最后一部分“project_branch”。

有什么想法吗?

谢谢,

肖恩

3 个答案:

答案 0 :(得分:4)

在4.0+中,您可以使用属性函数在一行中执行此操作。

例如在这种情况下 $([System.IO.Path] :: GetDirectoryName($(MSBuildProjectDirectory)))

或者您可以使用String函数。

答案 1 :(得分: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>

答案 2 :(得分:0)

如果您遵循最佳做法,那么您的项目目录将与项目文件具有相同的名称。因此,您应该能够使用:

$(MSBuildProjectName)