1

我不知道如何获取 $(MSBuildProjectDirectory) 的最后一部分。

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

我怎样才能做到这一点?

4

3 回答 3

4

In 4.0+ you can use Property Functions to do this in one line.

In this case for example $([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))

or you could use a String function.

于 2011-07-17T21:47:53.890 回答
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>
于 2010-04-23T00:47:44.293 回答
0

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

$(MSBuildProjectName)
于 2014-09-12T17:31:50.490 回答