7

我有一个 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>

如果我在 中定义它.propsOutputPath可能尚未设置...

另一方面,许多作者似乎只使用.targets自己......所以我最好只为我的依赖事物做这样的事情.targets而不打扰.props文件吗?

<Project InitialTargets="InitializeDependentProperties">
  <Target Name="InitializeDependentProperties">
    <PropertyGroup>
      <MyCustomOutputPath>$(OutputPath)/somethingelse</UseMyTarget>
    </PropertyGroup>
  </Target>
</Project>

微软自己的 MSBuild 道具/目标的做法似乎根本不遵循任何类型的标准/约定。

我确实希望允许消费项目能够.props/.targets通过设置Properties/Items/Targets自己来改变我的行为。

4

0 回答 0