有没有办法检测 .NET csproj 构建中的特定错误,并在响应中记录特定错误消息

问题描述 投票:0回答:1

我时不时地遇到一个奇怪的构建错误,用一个简单但非常不直观的修复。

通常当某些地方被配置为做一些丑陋的事情时:D

显然,如果可以的话,我会“正确”修复它,如果不能,我会记录修复结果......但我真正想做的是在 .csproj 中写一些类似于:

catch(Exception thisSpecificBuildErrorWithCodeXXXOrMessageYYY)
{
    log.Error("You've done PPPPP, which causes an error because QQQQQQ. The build is going to fail and the way that you fix it is by doing RRRRRR");
throw;
}

这样该消息就会立即呈现给下一个偶然发现它的开发人员。

MSBuild 有类似的东西吗?

团队 IDE 是 Rider,我们正在使用 .NET vLatest(如果相关)。

error-handling compiler-errors msbuild
1个回答
0
投票

执行 MSBuild 任务时,如果成功,任务将返回

true
,否则返回
false
。当任务失败时,任务的调用者将不知道原因。该任务可以生成消息、警告和错误作为输出(可以记录),但 MSBuild 中没有通用功能或工具来扫描任务的输出(例如Csc 任务)以查找特定错误。

您可以创建一个自定义记录器。您需要构建记录器程序集。然后,您需要构建指定自定义记录器的程序集的项目。在某些情况下这可能不切实际。

运行构建然后使用脚本扫描构建中的日志可能会更简单。

但是,在运行编译器之前是否可以执行验证或测试,而不是捕获编译器错误?是否存在可以测试的“丑陋的东西”的特定模式?

您可以将自定义 target 添加到执行验证的 .csproj。使用

BeforeTargets="BeforeBuild"
将目标设置为按目标顺序提前执行。使用错误任务报告失败的验证。您可以完全控制错误消息的内容。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.