我有一个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
的行为。