了解 MSBuild:打印变量值
Understanding MSBuild: Printing a variable value
我在 .csproj 文件中有以下 Import
。 props这个点怎么才能找到Variable
的值呢?
<Import Project="<path_to_abc>$(Variable)\abc.props>"
Condition=" '$(Variable)' != '' "
/>
我收到构建错误:
can not find props files : <path_to_abc>\abc.props
如何在此处查看 Variable
的值?如果我把 Message
放在 Import
上面的 .csproj 文件中,我应该给什么 Target 依赖项?
<Target Name="PrintInfo" BeforeTargets="BeforeBuild">
<Message Text="'$(Variable)' $(Variable.length) " />
</Target>
给我 '' 0
.
但那是因为 BeforeBuild
吗?
MSBuild 是如何工作的?
它是否在先到先得的顺序之前处理所有属性?
然后如果它处理 Targets
,它是否打印当前时间的值?
如何在评估道具时查看输入的值?
遗憾的是,当前未记录导入,但这将随着即将发布的 MSBuild 15.3 版本及其二进制日志记录功能而改变。
使用 /flp:Verbosity=diagnostic
调用 MSBuild 将向 msbuild.log
文件发出 属性 重新分配事件,如下所示:
0>Property reassignment: $(Foo)="bar" (previous value: "foo") at /Users/martin.ullrich/tmp/test.proj (10,5)
日志随后将包含一个 Initial Properties
列表,其中包含项目的完全评估属性(包括导入)。
理解语句 属性 定义和导入语句是 按顺序 处理的,所以当 <Import>
使用 属性 - 在条件或项目路径中 - 它将使用当时 属性 的值。
还有其他几个重要方面:
- 属性 组在 项目组和项目定义组之前处理。甚至跨越所有导入的项目! (因此带有条件的
<ItemGroup>
之后会看到属性 defined/imported 的值)
- 目标条件是在考虑执行目标时评估的,并且可能会受到所有导入的项目文件和已经 运行 的其他目标中发生的修改的影响。
我在 .csproj 文件中有以下 Import
。 props这个点怎么才能找到Variable
的值呢?
<Import Project="<path_to_abc>$(Variable)\abc.props>"
Condition=" '$(Variable)' != '' "
/>
我收到构建错误:
can not find props files :
<path_to_abc>\abc.props
如何在此处查看 Variable
的值?如果我把 Message
放在 Import
上面的 .csproj 文件中,我应该给什么 Target 依赖项?
<Target Name="PrintInfo" BeforeTargets="BeforeBuild">
<Message Text="'$(Variable)' $(Variable.length) " />
</Target>
给我 '' 0
.
但那是因为 BeforeBuild
吗?
MSBuild 是如何工作的?
它是否在先到先得的顺序之前处理所有属性?
然后如果它处理 Targets
,它是否打印当前时间的值?
如何在评估道具时查看输入的值?
遗憾的是,当前未记录导入,但这将随着即将发布的 MSBuild 15.3 版本及其二进制日志记录功能而改变。
使用 /flp:Verbosity=diagnostic
调用 MSBuild 将向 msbuild.log
文件发出 属性 重新分配事件,如下所示:
0>Property reassignment: $(Foo)="bar" (previous value: "foo") at /Users/martin.ullrich/tmp/test.proj (10,5)
日志随后将包含一个 Initial Properties
列表,其中包含项目的完全评估属性(包括导入)。
理解语句 属性 定义和导入语句是 按顺序 处理的,所以当 <Import>
使用 属性 - 在条件或项目路径中 - 它将使用当时 属性 的值。
还有其他几个重要方面:
- 属性 组在 项目组和项目定义组之前处理。甚至跨越所有导入的项目! (因此带有条件的
<ItemGroup>
之后会看到属性 defined/imported 的值) - 目标条件是在考虑执行目标时评估的,并且可能会受到所有导入的项目文件和已经 运行 的其他目标中发生的修改的影响。