.net 在C#项目中重写BuildDependsOn时遇到问题

.net 在C#项目中重写BuildDependsOn时遇到问题,.net,msbuild,.net,Msbuild,我正试图按照这里的文档进行操作--将一个简单的目标添加到.NET核心项目文件的构建管道中。然而,我做错了什么,只是看不见而已 我采用了一个简单的“Hello World”项目文件,添加了一个只打印消息的简单目标,并按照文档建议重新定义了BuildDependsOn,以获得: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType>

我正试图按照这里的文档进行操作--将一个简单的目标添加到.NET核心项目文件的构建管道中。然而,我做错了什么,只是看不见而已

我采用了一个简单的“Hello World”项目文件,添加了一个只打印消息的简单目标,并按照文档建议重新定义了
BuildDependsOn
,以获得:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>

    <BuildDependsOn>
      Target1;
      $(BuildDependsOn)
    </BuildDependsOn>
  </PropertyGroup>

  <Target Name="Target1">
    <Message Text="Running Target1" Importance="high" />
  </Target>

</Project>

Exe
netcoreapp2.2
Target1;
$(BuildDependsOn)
当我尝试使用msvc2017或dotnet CLI(“dotnet Build-c Release Hello.csproj”)来“构建”此项目时,不会打印此消息

当我使用msbuild查看完全预处理的项目时,我可以清楚地看到
BuildDependsOn
属性的定义。我不知道为什么我的重新定义不起作用。我也尝试过用
rebuildedpendson
进行同样的操作,但没有效果

有什么建议吗?我错过了什么


提前感谢您的帮助

我更喜欢添加依赖于其他内容的构建目标的方法是
BeforeTargets
BeforeTargets
。 此处记录:

我认为这只是简单得多,而且我可能会添加更少的XML

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <Target Name="Target1" AfterTargets="Build" >
    <Message Text="Running Target1" Importance="high" />
  </Target>
</Project>

Exe
netcoreapp2.2

事情没有像您预期的那样工作的原因是您有一个SDK风格的项目:

请注意:


网络46
相当于:


网络46
在项目结束时隐式导入
Sdk.targets
,会覆盖
BuildDependsOn
的定义

您可以显式地添加导入,然后在
Sdk.targets
导入之后添加
BuildDependsOn
的定义


Exe
netcoreapp2.2
Target1;
$(BuildDependsOn)

请参见和。

是的,我能够用类似的东西使它工作。我觉得很奇怪,在“如何扩展构建过程”页面中阐述的机制似乎不起作用。所以,我想我一定是遗漏了什么,但看不到什么。@ddneilson“如何扩展构建过程”的哪一部分似乎不起作用?您是否看到该文档中与SDK样式项目相关的注释?