Msbuild 如何在BuiltProjectOutputGroup中包含项

Msbuild 如何在BuiltProjectOutputGroup中包含项,msbuild,.net-core,dotnet-cli,dotnet-sdk,Msbuild,.net Core,Dotnet Cli,Dotnet Sdk,我有一个自定义的项目系统,它使用标准的NetSDK目标。 在构建过程中,我生成了一个额外的zip文件。我希望这个额外的文件包含在一个输出组中,这样当我查询我的项目输出组(从vs)时,它就会显示出来 我的项目文件如下所示: <Project Sdk="Microsoft.NET.Sdk"> ... stuff <ItemGroup> <PackageReference Include="DnnVsProjectSystem.BuildTools" Ve

我有一个自定义的项目系统,它使用标准的NetSDK目标。 在构建过程中,我生成了一个额外的zip文件。我希望这个额外的文件包含在一个输出组中,这样当我查询我的项目输出组(从vs)时,它就会显示出来

我的项目文件如下所示:

<Project Sdk="Microsoft.NET.Sdk"> 
 ... stuff
  <ItemGroup>
    <PackageReference Include="DnnVsProjectSystem.BuildTools" Version="0.0.5">
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
  </ItemGroup>
  <Import Project="$(CustomProjectExtensionsPath)DnnVsProjectSystem.targets"/>
</Project>
当VS需要有关输出组的信息时,它似乎是VS调用的目标

问题是,我不确定如何将我的项包含在其中一个输出组中,就好像我只是将项添加到我自己的目标中的项组中一样-我的目标在这一点上是无关的,因为它们不包含在此依赖链中

我也不能覆盖任何目标,因为在使用
sdk
属性时,看起来sdk目标总是最后导入的,覆盖了我声明的任何内容


非常感谢任何指导。

如果您唯一关心的是挂接到目标或其依赖链,我建议在目标之前使用msbuild的
功能:

<Target Name="IncludeMyCustomOutputGroup" BeforeTargets="AllProjectOutputGroups" DependsOnTargets="ResolveMyCustomPropertiesAndItems">
  <ItemGroup>
    <!-- Assuming @(MyCustomOutput) items are generated by your ResolveMyCustomPropertiesAndItems target, or just add anything else -->
    <BuiltProjectOutputGroupKeyOutput Include="@(MyCustomOutput->'%(FullPath)')">
      <IsKeyOutput>true</IsKeyOutput>
      <FinalOutputPath>$(TargetPath)</FinalOutputPath>
      <TargetPath>$(TargetFileName)</TargetPath>
    </BuiltProjectOutputGroupKeyOutput>
  </ItemGroup>
</Target>

真的
$(目标路径)
$(TargetFileName)

我认为你的标题应该是“。。。在BuiltProjectOutputGroupKeyOutput'中,不是BuiltProjectOutputGroup。后者是一个目标。也许还可以查看它的代码(以及其他依赖项):一些目标为其DependentTargets使用属性,因此您可以将属性设置为您的一个目标,然后您就可以进行设置。感谢@stijn,我终于找到了,我发现内容输出组target为其Dependentson使用属性,所以我成功地将我的目标添加到这一点上。谢谢,我设法找到了另一种方法,但我会接受这个答案另一种方法是发现某些输出组目标具有相应的“dependson”属性。您可以通过使用包含您自己的目标的属性覆盖thisdependent属性来钩住它们,然后在该目标中,您可以在该输出组中包含其他项。例如,内容输出组使用此机制。不确定他们是否都这样做,但是如果他们没有,那么很确定你的答案仍然有效。
<Target Name="IncludeMyCustomOutputGroup" BeforeTargets="AllProjectOutputGroups" DependsOnTargets="ResolveMyCustomPropertiesAndItems">
  <ItemGroup>
    <!-- Assuming @(MyCustomOutput) items are generated by your ResolveMyCustomPropertiesAndItems target, or just add anything else -->
    <BuiltProjectOutputGroupKeyOutput Include="@(MyCustomOutput->'%(FullPath)')">
      <IsKeyOutput>true</IsKeyOutput>
      <FinalOutputPath>$(TargetPath)</FinalOutputPath>
      <TargetPath>$(TargetFileName)</TargetPath>
    </BuiltProjectOutputGroupKeyOutput>
  </ItemGroup>
</Target>