提取MSBuild参数
本文关键字:参数 MSBuild 提取 | 更新日期: 2023-09-27 17:51:10
我有一个这样的MSBuild文件:
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<Param1>Hello world</Param1>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<Param1>Goodbye world</Param1>
</PropertyGroup>
</Project>
我正在处理一个外部应用程序,我需要能够找出Param1的配置值是什么。我需要一种方法来正确地评估MSBuild文件,以便应用任何条件,然后将正确的参数返回给调用应用程序。
能够做这样的事情将是伟大的:
>MSBuild /p:Configuration=Release MyBuild.proj -extractParam:Param1
>Goodbye World
任何想法?这是否可以用c#代替?
您可以让项目输出值,然后使用脚本/c#/....解析它
将此目标添加到您的项目:
<Target Name="OutputParam1" AfterTargets="Build">
<Message Text="Param1 = $(Param1)"/>
</Target>
将在构建目标之后自动调用。然后在命令行中:
>MSBuild /p:Configuration=Release MyBuild.proj /fl
,其中/fl导致生成文件msbuild.log,其中将包含一行
Param1 = Goodbye world
,因为Message任务。现在使用例如powershell输出匹配的部分:
>powershell -command "$a = Select-String -Path msbuild.log -Pattern 'Param1 = (.+)'; $a.Matches[0].Groups[1].Value"
>Goodbye world
您可以添加一个打印参数值的目标:
<Target Name="ExtractParam1" >
<Message Text="$(Param1)" Importance="high" />
</Target>
开关/v:m /nologo
使输出只打印值:
msbuild/p:Configuration=Release MyBuild。proj/t:ExtractParam1/v:m/nologo