我不知道如何获取 $(MSBuildProjectDirectory) 的最后一部分。
例如,如果值为“c:\development\projects\project_branch”,那么我只想要最后一部分“project_branch”。
我怎样才能做到这一点?
我不知道如何获取 $(MSBuildProjectDirectory) 的最后一部分。
例如,如果值为“c:\development\projects\project_branch”,那么我只想要最后一部分“project_branch”。
我怎样才能做到这一点?
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.
<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>
如果您遵循最佳实践,那么您的项目目录将与您的项目文件具有相同的名称。因此,您应该能够使用:
$(MSBuildProjectName)