我希望获得.NET程序集中使用的所有字符串的列表,包括设置局部变量的“静态”值,传递给方法的参数,设置为的字段等等。
我记得很久以前我读过的一个.NET程序集包含了它所使用的所有字符串的表(或者它们可以被“实习”) - 或者我只是在做梦?
使用.NET Reflector是一个很好的理想(感谢thijs),如果没有人提出已经编写的工具,我也会看看它的API。
(这是我可以写一个工具来检查我们没有错过任何应该翻译的字符串。我可以处理C#源代码,但是我将不得不应对 分裂在许多行等的字符串。)
我刚才想过,我希望排除传入CodeFlowException()等的字符串,所以这已经变得越来越复杂了。
PS:如果你能想到一套更好的标签,请重新提出这个问题。
答案 0 :(得分:12)
您可以使用SysInternals Strings工具查看可执行文件和目标文件中的字符串。
答案 1 :(得分:2)
你应该能够使用反射做到这一点,看看这个:
http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.isliteral.aspx
和
http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.aspx
答案 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#代码库上工作)