3

我正在尝试使用Roslyn Emit Api 编译一些语法不正确的代码。编译代码的线程将 Culture 设置为“fr-Fr”,但我从 Roslyn api 获得的诊断消息是英文的。例如

错误 BC30037:字符无效。

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

4

1 回答 1

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项目添加一个附加文件并让ResourceManager自动选择正确的 .resx 文件来使 Roslyn 成为多语言。这绝对适用于 .Net Framework WinForms 项目,但我不知道此功能是否已保留在新的 .Net 标准格式中。

于 2018-04-03T05:29:33.190 回答