从 .NET 程序集 (dll) 获取所有静态(内部)字符串
-
06-09-2019 - |
题
我希望获得 .NET 程序集中使用的所有字符串的列表,包括设置局部变量的“静态”值、传递给方法的参数、设置的字段等。
我记得很久以前读到过,.NET 程序集包含它使用的所有字符串的表(或者它们可以“驻留”)——或者我只是在做梦?
使用 .NET反射器 是一个很好的理想(感谢 thijs),如果没有人提出已经编写的工具,我也会看看它的 API。
(这样我就可以编写一个工具来检查我们没有错过任何应该翻译的字符串。我可以处理C#源代码,但是我将不得不应对在许多行上拆分的字符串等)
我刚刚想,我希望排除传递到 CodeFlowException() 等的字符串,所以这已经变得更加复杂。
附:如果您能想到一组更好的标签,请重新标记此问题。
解决方案 5
在结束我写了一个非常简单的C#解析器发现在源代码中的字符串。这解决了我的问题,并让我补充“意见”的字符串,以帮助翻译。
的意见只是从C#注释读取“神奇格式”
(对不起解析器不够好,让其他人使用它,它才刚刚约我的C#代码库的作品)
其他提示
可以使用的Sysinternals 字符串工具,以查看在可执行文件中的字符串和目标文件。
对于那些想要提取所有内容的人 用户字符串 从 .NET 程序集(.exe 或 .dll)我写了一个 简单实用 可以做到这一点(文件 ExtractExeNetStrings2.zip
)。该实用程序是用 C# 编写的。
提取所有内容的简单 C# 实用程序 用户字符串 通过检查二进制文件的位来从 .NET 程序集(.exe 或 .dll)中获取。
源代码来自 弗拉多布现在可以找到答案 在 github 上这里. 。原始答案的链接已损坏。vladob 同意此转发。其实我已经同意了。
不隶属于 StackOverflow