从.NET程序集中获取所有静态(实习)字符串(dll)

时间:2009-06-02 11:25:19

标签: .net string internationalization low-level

我希望获得.NET程序集中使用的所有字符串的列表,包括设置局部变量的“静态”值,传递给方法的参数,设置为的字段等等。

我记得很久以前我读过的一个.NET程序集包含了它所使用的所有字符串的表(或者它们可以被“实习”) - 或者我只是在做梦?

使用.NET Reflector是一个很好的理想(感谢thijs),如果没有人提出已经编写的工具,我也会看看它的API。

(这是我可以写一个工具来检查我们没有错过任何应该翻译的字符串。我可以处理C#源代码,但是我将不得不应对 分裂在许多行等的字符串。)

我刚才想过,我希望排除传入CodeFlowException()等的字符串,所以这已经变得越来越复杂了。

PS:如果你能想到一套更好的标签,请重新提出这个问题。

5 个答案:

答案 0 :(得分:12)

您可以使用SysInternals Strings工具查看可执行文件和目标文件中的字符串。

答案 1 :(得分:2)

答案 2 :(得分:2)

对于那些想要从.NET程序集(.exe或.dll)中提取所有用户字符串的人,我写了simple utility可以做到这一点(文件ExtractExeNetStrings2.zip )。 该实用程序是用C#编写的。

答案 3 :(得分:1)

简单C#实用程序,它通过检查二进制文件的位来从.NET程序集(.exe或.dll)中提取所有用户字符串

现在可以找到来自 vladob 的答案的源代码on github here。原始答案的链接已被破坏。 vladob同意这个转贴。其实我同意了我。

答案 4 :(得分:0)

最后,我写了一个非常简单的C#解析器,它在源代码中找到了字符串。这解决了我遇到的问题,让我在字符串中添加“注释”以帮助翻译。

评论只是以“魔术格式”

从C#评论中读取

(抱歉解析器不够好,不允许其他人使用它,它只是在我的C#代码库上工作)