【问题标题】:Getting Culture specific errors from Roslyn Compilation从 Roslyn 编译中获取特定于文化的错误
【发布时间】:2018-02-23 13:43:35
【问题描述】:

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

错误 BC30037:字符无效。

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

【问题讨论】:

  • 你能提供一个你正在使用的代码的小例子吗?给定错误号,听起来您使用的是 VB 编译器而不是 C#。 (更重要的是,如果我们有一个可以试验的例子,如果我们认为我们有解决方案,我们就会更有信心。)

标签: c# roslyn codedom runtime-compilation


【解决方案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 标准格式中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多