有没有办法在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>
Frankensolution
快速解决方案(根据评论),两个msbuild调用,首先写入一个文件。其次以这种方式导入(通过从文件中读取路径):
<PropertyGroup>
<AppRootDir>$([System.IO.File]::ReadAllText($(MSBuildProjectDirectory)\directory.txt))\..\automation\</AppRootDir>
</PropertyGroup>
答案 0 :(得分:0)
没有。进口发生在“评估阶段”,而不是“执行阶段”。
在构建的评估阶段...导入的文件按照它们出现的顺序合并到构建中...属性按它们出现的顺序定义和修改。
您可以拆分配置收集&amp;执行到单独的msbuild项目中,一个调用另一个。
ie:Generate targets with MSBuild then import them in same session