从Roslyn编译中获取特定于文化的错误

时间:2018-02-23 13:43:35

标签: c# roslyn codedom runtime-compilation

我正在尝试使用 Roslyn Emit Api编译一些语法不正确的代码。编译代码的线程将Culture设置为" fr-Fr" 但我从Roslyn api获得的诊断信息是英文的。 e.g。

  

错误BC30037:字符无效。

我想知道是否有办法在特定于线程的文化中获取错误消息。 codeDom也是如此。

1 个答案:

答案 0 :(得分:1)

这可能不是一个可行的答案,但无论如何我都会发布它以备不时之需。

Roslyn编译器是开源的,因此可以对其进行修改,并以这种方式将错误消息从英语更改为法语或其他任何内容。请注意,Roslyn是一个庞大的程序,重建它并不是那么容易,至少在我的经验中。

我写过几篇关于修改Roslyn的经历的博客文章。我的最新修改包括添加新的错误消息 - 这就是我碰巧找到这个问题的方法。

https://renniestechblog.com/information/33-modifying-roslyn-step-1-initial-test

https://renniestechblog.com/information/39-modifying-roslyn-step-6-fake-attribute-yacksserialization

甚至可以通过向项目添加额外的CSharpResources.fr-FR.resx文件来使Roslyn多语言,并让ResourceManager自动选择正确的.resx文件。这绝对适用于.Net Framework WinForms项目,但我不知道这个功能是否以新的.Net标准格式保留。