【发布时间】:2013-05-08 13:05:05
【问题描述】:
有没有办法在 msbuild 中使用 Import 指令,这样 Project 属性的值是一个变量,并且该变量在目标中定义?
就目前而言,在我看来,Import 指令是在任何目标之前评估的。
例如:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishDir>none</PublishDir>
<AutomatedTestsTarget>none</AutomatedTestsTarget>
</PropertyGroup>
<Target Name="GetPublishDir">
...
</Target>
<Target Name="BeforeCompile" DependsOnTargets="GetPublishDir">
<PropertyGroup>
<AutomatedTestsTarget>$(PublishDir)\automated_tests.build</AutomatedTestsTarget>
</PropertyGroup>
</Target>
<Import Project="$(AutomatedTestsTarget)"/>
</Project>
弗兰肯解决方案
快速解决方案(根据评论),两次 msbuild 调用,首先写入一个文件。其次以这种方式导入(通过从文件中读取路径):
<PropertyGroup>
<AppRootDir>$([System.IO.File]::ReadAllText($(MSBuildProjectDirectory)\directory.txt))\..\automation\</AppRootDir>
</PropertyGroup>
【问题讨论】:
-
为了它的价值,我通过两个 msbuild 调用解决了这个问题;第一个将文件(包含路径)写入磁盘。第二个调用读取文件并以这种方式检索发布目录。
标签: msbuild