我正在尝试使用 Roslyn Emit Api编译一些语法不正确的代码。编译代码的线程将Culture设置为" fr-Fr" 但我从Roslyn api获得的诊断信息是英文的。 e.g。
错误BC30037:字符无效。
我想知道是否有办法在特定于线程的文化中获取错误消息。 codeDom也是如此。
答案 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标准格式保留。