我有一个 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
而不打扰.props
文件吗?
<Project InitialTargets="InitializeDependentProperties">
<Target Name="InitializeDependentProperties">
<PropertyGroup>
<MyCustomOutputPath>$(OutputPath)/somethingelse</UseMyTarget>
</PropertyGroup>
</Target>
</Project>
微软自己的 MSBuild 道具/目标的做法似乎根本不遵循任何类型的标准/约定。
我确实希望允许消费项目能够.props/.targets
通过设置Properties/Items/Targets
自己来改变我的行为。