查找MSBuildProjectDirectory父目录
MSBuild 3.5 我有以下项目结构:查找MSBuildProjectDirectory父目录,msbuild,Msbuild,MSBuild 3.5 我有以下项目结构: trunk/MainSolution.sln trunk/Build/MyBuild.Proj trunk/Library/... trunk/etc... 到目前为止,我一直在使用以下属性查找项目根文件夹: <RootFolder>$(MSBuildProjectDirectory)\..\</RootFolder> 因此,基本上,我需要获取(MSBuildProjectDirectory)父级的完整路径。项元数据是您的朋
trunk/MainSolution.sln
trunk/Build/MyBuild.Proj
trunk/Library/...
trunk/etc...
到目前为止,我一直在使用以下属性查找项目根文件夹:
<RootFolder>$(MSBuildProjectDirectory)\..\</RootFolder>
因此,基本上,我需要获取(MSBuildProjectDirectory)父级的完整路径。项元数据是您的朋友
<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>
看起来很棒!你知道我如何使用它来创建一个带有路径的变量吗?e、 g.%(MSBuildParentDirectory.Fullpath),但显然这不起作用…在目标执行之前对属性进行评估,您必须使用CreateProperty任务(请参阅我的编辑)确定,那么您是说我必须使用CreateProperty任务?我问这个问题的原因是因为我目前有大约5个属性需要这个路径。e、 CodeFolder、DBFolder、DeployFolder等等…如果您绝对需要5个属性,是的,这就是我要说的。
<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>