找到MSBuildProjectDirectory父目录

时间:2009-02-05 02:11:15

标签: msbuild

MSBuild 3.5

我有以下项目结构:

trunk/MainSolution.sln
trunk/Build/MyBuild.Proj
trunk/Library/...
trunk/etc...

到目前为止,我一直在使用以下属性来查找项目根文件夹:

<RootFolder>$(MSBuildProjectDirectory)\..\</RootFolder>

一切都很顺利,直到我尝试使用依赖此路径的复制任务。它没有正确解决。我基本上最终得到的这样的东西是无效的:

C:\Projects\MyProject\Trunk\Build\..\CodeAnalysis\myfile.xml

所以基本上,我需要获得(MSBuildProjectDirectory)父级的完整路径。

1 个答案:

答案 0 :(得分:16)

项目元数据是你的朋友!

<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>