有没有办法在 msbuild 中使用 Import 指令,以便 Project 属性的值是一个变量,并且该变量是在目标中定义的?
就目前而言,在我看来,导入指令是在任何目标之前评估的。
例如:
<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>