我有一个简单的 hello world 控制台应用程序,其顶级语句如下:
Console.WriteLine("Hello world");
我想在构建过程之前尝试自动执行目标,因此我按如下方式编辑了 CSPROJ 文件;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<Target Name="BeforeBuild" BeforeTargets="Build">
<Message Text="BEFORE BUILD TARGET" Importance="high" />
</Target>
</Project>
我尝试了
dotnet build MyProj.csproj
,将详细级别一直提高到diagnostic
。但是我无法显示消息文本。
我在这里做错了什么?
您的目标名称是
"BeforeBuild"
:
<Target Name="BeforeBuild" BeforeTargets="Build">
引用微软文档这里:
请确保使用与预定义目标不同的名称(例如,此处的自定义构建目标是 CustomAfterBuild,而不是 AfterBuild),因为这些预定义目标会被定义它们的 SDK 导入覆盖。请参阅本文末尾的表格,了解预定义目标的列表。
尝试将目标名称更改为(例如)
"CustomBeforeBuild"
,以避免这种微妙的陷阱。