gpt4 book ai didi

c# - 使用 `StackExchange.Precompilation` ,如何输出构建错误?

转载 作者:行者123 更新时间:2023-11-30 23:18:23 26 4
gpt4 key购买 nike

我正在使用 StackExchange.Precompilation 在构建时执行一些 C# 语法转换。我希望能够在构建期间从我的 ICompileModule 中抛出异常,并将这些输出到 Visual Studio 的输出窗口。

我创建了一个自定义异常类型 PrecompilationException 来表示在这些语法转换期间发生的错误。这是我的异常类:

[Serializable]
public class PrecompilationException : Exception {

public PrecompilationException() : base() { }

public PrecompilationException(string message) : base(message) { }

public PrecompilationException(string message, Exception innerException) : base(message, innerException) { }

protected PrecompilationException(SerializationInfo info, StreamingContext context) : base(info, context) { }
}

当抛出这些异常之一时,输出窗口显示一个 SerializationException,其消息是 “Type is not resolved for member 'PrecompilationException...”,但是没有 PrecompilationException 的详细信息,例如它的消息或堆栈跟踪。

我是否在我的异常类中遗漏了一些对正确序列化很重要的东西?是否有更好的方法让 StackExchange.Precompilation 记录错误?


更新如果我将抛出的异常类型更改为标准类型,如 ExceptionNotSupportedException,输出窗口将显示异常详细信息。但是,我仍然希望能够以这种方式使用自定义异常类型。

更新2这个问题的答案揭示了为什么我的自定义异常类型不起作用。基本上,ASP.NET 编译器无法序列化不在 GAC 中的类型。

Type resolution error during ASP.NET precompilation

最佳答案

只需添加一个DiagnosticBefore 中的 Diagnostics 集合/AfterCompileContext .

另一种选择是在 MsBuild VS-Aware error message format 中使用 Console.WriteLine

关于c# - 使用 `StackExchange.Precompilation` ,如何输出构建错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40953114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com