代码之家  ›  专栏  ›  技术社区  ›  Jeff

MSBuild定制道具/目标的设计实践

  •  4
  • Jeff  · 技术社区  · 6 年前

    我有一个NuGet软件包,我正在处理自定义道具/目标文件,我想知道在定义和覆盖方面如何定义多个属性、项目和目标的最佳实践。

    把所有的房产直接放在我的房子里更好吗 MyNuGetPackage.targets 归档,不要使用 MyNuGetPackage.props 就这样吗?

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

    还是更好的做法是定义 UseMyTarget .props 无条件归档,并将目标保存在。目标文件?

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

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

    如果我用 .道具 , OutputPath 可能还没定下来。。。

    另一方面,许多作者似乎只使用 .targets 他们自己那么,为了我的生活中需要依赖的事情,我做这样的事情会更好吗 .目标 而且不用担心 .道具 文件夹?

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

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

    我确实想让消费项目能够改变我的行为 .props/.targets 通过设置 Properties/Items/Targets 他们自己

    0 回复  |  直到 6 年前
    推荐文章