2

どこに質問すればいいのかよくわかりません。

基本的に、私は製品のローカリゼーションを担当しています。コンパイルされたアセンブリからすべてのリテラル文字列を抽出する方法が必要です。行番号とソースファイルを取得する必要があります(比較のため)。私はFxCopを使用していて、すべての「ldstr」命令を吐き出すルールを作成しました。しかし、これは廃止されたFxCopに依存しています(私は信じています)。ildasmの使用も検討しましたが、出力を解析して必要な情報を確実に取得する方法についてのチュートリアルが見つかりません。

それで、これを処理するユーティリティはありますか?私が考えていない簡単な方法は?ReSharperのような拡張機能も、ソリューションの現在の状態でのみ動作するため、避けたいと思います。たとえば、比較に使用する出力を生成できません。

4

3 に答える 3

2

ildasmはそれを行うことができます:

ildasm.exe /text /metadata=heaps mscorlib.dll >out.txt

// User Strings
// -------------------------------------------------------
// 70000001 : ( 4) L"info"
// 7000000b : ( 2) L", "
// 70000011 : ( 5) L"value"
// 7000001d : ( 1) L"D"
...
于 2012-07-22T02:51:26.767 に答える
1

Visual Studioを使用している場合は、次のマクロを実行できます

Sub TemporaryMacro()
        DTE.ExecuteCommand("Edit.FindinFiles")
        DTE.Find.FindWhat = ":q"
        DTE.Find.Target = vsFindTarget.vsFindTargetFiles
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = True
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
        DTE.Find.SearchPath = "C:\yourproject"
        DTE.Find.SearchSubfolders = True
        DTE.Find.FilesOfType = "*.*"
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResults1
        DTE.Find.Action = vsFindAction.vsFindActionFindAll
    End Sub

基本的には、ディレクトリ内の:q引用符付き文字列の正規表現検索を実行して、ソースコード内のすべての引用符付き文字列を取得します。

于 2012-07-20T18:09:57.567 に答える
0

明らかに、素晴らしいCecilOSSフレームワークがここで役立つ可能性があります。アセンブリファイルで文字列リテラルを簡単に見つけることができます。

ソースファイル内の文字列を見つけるには、もう少し作業が必要です。賢明なのは、アセンブリのテキストソースファイルのコンテンツを検索して、すべての文字列宣言を見つけることです。

  • 逐語的@"my""string"
  • またはクラシックのような"my\"string"

アセンブリのソースファイルのリストは、 Cecil.PDBサブフレームワークから取得できます。

于 2012-07-21T22:09:30.293 に答える