我正在使用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
,其消息为&#34;未解析成员类型&#39;预编译异常...&#34; < / em>,但没有PrecompilationException
的详细信息,如其消息或堆栈跟踪。
在我的异常类中,我是否遗漏了一些对于正确序列化很重要的内容?有没有更好的方法让StackExchange.Precompilation
记录错误?
更新
如果我将抛出的异常类型更改为标准Exception
或NotSupportedException
,则输出窗口将显示异常详细信息。但是,我仍然希望能够以这种方式使用自定义异常类型。
UPDATE2 这个问题的答案解释了为什么我的自定义异常类型不起作用。基本上,ASP.NET编译器无法序列化GAC中没有的类型。
答案 0 :(得分:2)
只需在Diagnostic
/ Before
中的Diagnostics
个收藏集中添加AfterCompileContext
即可。
另一种选择是MsBuild VS-Aware error message format
中的Console.WriteLine