複数の.resxファイルを比較するにはどうすればよいですか?
質問
2つ(またはそれ以上)の大きな.resxファイルの内容を比較するにはどうすればよいですか?各ファイルに何百もの名前/値のペアがあるので、組み合わせたバージョンを表示すると非常に役立ちます。特に興味があるのは、ニュートラルカルチャに存在するが、カルチャ固有のバージョンでは指定されていない名前/値のペアです。
解決
resxファイルを編集するための優れたフリーウェアツールがあり、複数の言語を一度に表示し、不足または余分なものを明確に確認できます- Zetaリソースエディタ
他のヒント
それ自体は差分ツールではありませんが、 RESX Synchronizer が役立つ場合があります。主な用途は、ローカライズされた.resxファイルをニュートラル言語の新しいエントリで更新し、削除されたアイテムを削除することです。
場合によっては、/ vコマンドラインスイッチと共に使用して生成される出力が必要なものになります。それ以外の場合は、完全なC#ソースコードが付属しているため、ニーズに合わせて調整できます。
新しいバージョンのVisual Studio(2010以降)には、 ResXManager ( tomenglert により作成)これのために。
各言語の各リソースを並べて表示し、不足しているリソースを強調表示できます。 (以下の例は、拡張機能のダウンロードページからのものです。)
XMLファイルで単純なdiffを使用しても、一致する要素が両方のファイルで同じ順序で表示されない場合、まったく役に立たない可能性があります。これまでのところ、XML固有のdiffツールも探していましたが、成功していませんでした。
当面の間、私が使用している回避策は次のとおりです:
- Visual Studioで
.resx
ファイルを開きます。 - すべての[ Ctrl + A ]を選択し、[ Ctrl + X ]を切り取ります(これには、一方、大きなファイルの場合は我慢してください)
- [ Ctrl + V ]を貼り付けて保存します(これにより、キーでソートされた
.resx
ファイルが再作成されます)
このように両方のファイルを並べ替えると、通常の差分処理が非常に簡単になります。差分をざっと確認することで、不足しているキーをすばやく見つけることができます。
XMl diffツールをいくつか試しました。ここに要約があります(それを評価するために私を駆り立てた要件は、Visual Studioが生成した .resx
リソースファイルを比較することでした。ボタンの場所を変更するだけで、imageListで何もしない場合、Windowsフォームは常にImageStreamを書き換えます。
- XmlDiff
- Araxis
- Altova DiffDog
- XMLメモ帳
- ExamXML
- Liquid XML Studio 2009 (XML diffメニューはありますが、ライセンスバージョンで使用できるため、試してみる機会はありません)
まず第一に、XMLについて何も知らず、テキストファイルを単なるテキスト行として扱うため、通常のdiffツールはすべて考慮すべきではありません。
-
XmlDiffは私が最初に試したツールです。私は必要なことができるように見えますが、ソースコードをダウンロードした後( Visual  Studio&nbsp ; 2003 )およびVisual  Studio  2005でコンパイル(自動アップグレードに成功)小さなプロジェクトをスムーズにコンパイルできます。しかし、2つの実際の
.resx
ファイル(1295行)を比較すると、クラッシュしました。xmldiffpatch.dll XmlDiffPatch.View.dll
のソースコードがないため、コードをデバッグしても、何が起こったのかについての手がかりが得られません。そして、このツールをさらに掘り下げようとしなかった理由は、出力形式またはGUIデザインでした。 Internet  Explorerがホストするウィンドウで違いが強調表示されたHTMLファイルを出力します。大きなXMLファイルの差分の場合、使用するのは簡単ではありません。
-
XML Notepadには、単純な組み込みXML diffがあります。出力ウィンドウによると、内部的にXmlDiffのコンポーネントを使用していると思います。また、出力はXmlDiffと同じです。アンインストールします。
-
Araxisは、従来のテキスト差分ツールであり、バイナリファイル、画像ファイル、フォルダー、およびワードファイルを比較することもできます。 XMLに対応したdiffオプションがサポートされていないため、XMLの except 以外のdiffタスクに非常に気に入っています。
-
Altova DiffDogは複雑な商用製品のように見えますが、要素の順序を無視するオプションが含まれていました。これは私にとって重要な機能です。
しかし、同じ実際の
.resx
ファイル(私の経験では大きなものではない1295行)で試してみたところ、「要素の順序を無視する」ということがわかりました。 2つの要素が2つのファイル内の非常に異なる場所にある場合は、うまく機能しません。 -
ExamXMLは商用製品のように見えますが、小さな製品です。しかし、試してみたところ、現在の私の期待にとって最も理想的なツールであることがわかりました。
残念な面もあります。 F10 を押して次の違いに移動するとクラッシュしました。 要素の順序を無視オプションはうまく機能します。無視された要素のカスタマイズがそれほど柔軟ではないという落とし穴が1つあります。
label1.Size
label1.Location
label1.Width
名前に" .Size"が含まれるこれらの要素の違いをすべて無視したいまたは" .Location"または" .Width"。ただし、このような条件を同時に定義することはできません。カスタマイズは正規表現をサポートしていません。
とにかく、ExamXMLを(注意して)使用してXMLファイルを比較します。
更新1: 何年も経ちましたが、今ではVS2017を使用していますが、この質問に対する最初の回答からwinformは変わりませんでした。仕事を別の人に分解する必要があるとき、この問題は何度も何度も発生し、退屈しました。
実際、私は見捨てました
XML Diffを使用して何かをコーディングできます。 アプリケーションでのXML Diff and Patch Toolの使用を参照してください。 。
TortoiseSVNのdiffなどのツールを使用できます(Windowsを使用している場合)。両方のファイルを選択して右クリックし、「diff」を選択します。 TortoiseSVNサブメニューから。