针对自定义道具/目标的MSBuild设计实践

时间:2018-08-12 00:23:13

标签: msbuild msbuild-target msbuild-15

我有一个NuGet包,我正在使用自定义props / targets文件,并且想知道有关如何在定义和覆盖方面对许多属性,项目和目标进行优化的最佳实践。

将所有属性直接保存在我的MyNuGetPackage.targets文件中,而不像这样完全不使用MyNuGetPackage.props更好吗?

<PropertyGroup>
    <UseMyTarget Condition="'$(Prop1)' == ''">true</UseMyTarget>
</PropertyGroup>

<Target Name="MyTarget" Condition="'$(UseMyTarget)' == 'true'>
  ...
</Target>

还是更好的做法是无条件地在UseMyTarget文件中定义.props并将目标保留在.targets文件中?

如果我需要捕获Microsoft或其他人为其设置默认值的属性,则两种方法都将失效。例如:

<PropertyGroup>
    <MyCustomOutputPath>$(OutputPath)/somethingelse</UseMyTarget>
</PropertyGroup>

如果我在.props中进行了定义,则可能尚未设置OutputPath ...

另一方面,许多作者似乎只是自己使用.targets ...所以我最好还是对我的.targets中的依赖项做这样的事情,而不必理会{{1} }个文件?

.props

微软自己的MSBuild道具/目标实践似乎根本没有遵循任何标准/惯例。

我确实希望允许消耗性项目能够通过自行设置<Project InitialTargets="InitializeDependentProperties"> <Target Name="InitializeDependentProperties"> <PropertyGroup> <MyCustomOutputPath>$(OutputPath)/somethingelse</UseMyTarget> </PropertyGroup> </Target> </Project> 来改变.props/.targets的行为。

0 个答案:

没有答案