14

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

我从很久以前读过的一篇文章中回忆起 .NET 程序集包含一个包含它使用的所有字符串的表(或者它们可以被“实习”)——或者我只是在做梦?

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

(这样我就可以编写一个工具来检查我们没有遗漏任何应该翻译的字符串。我可以处理 C# 源代码,但是我将不得不处理分成多行的字符串等)

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

PS:如果您能想到更好的标签集,请重新标记此问题。

4

5 回答 5

14

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

于 2009-06-02T11:41:41.980 回答
3

对于那些想要从 .NET 程序集(.exe 或 .dll)中提取所有用户字符串的人,我编写了一个可以执行此操作的简单实用程序(文件ExtractExeNetStrings2.zip)。该实用程序是用 C# 编写的。

于 2012-02-26T11:14:49.670 回答
2

您应该能够使用反射来做到这一点,看看这个:

http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.isliteral.aspx

http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.aspx

于 2009-06-02T11:49:55.037 回答
2

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

现在可以在 github上找到vladob答案的源代码。原始答案的链接已损坏。vladob 同意此转发。其实我同意了。

于 2016-05-09T18:13:20.733 回答
0

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

注释只是从 C# 注释中以“魔术格式”读取的</p>

(对不起,解析器不够好,不能让其他人使用它,它只能在我的 C# 代码库上工作)

于 2009-08-27T09:04:12.537 回答