5

ローカライズされたアプリケーションを持っていてスタンドアロンEXEを提供する必要がある人は誰でもこの問題を抱えているため、この質問は私自身の場合を超えて適切です-彼らはILMerge(またはCosturaまたはいくつかの自作ソリューション)を使用してローカリゼーションDLL(または他のアセンブリ)を配置したいと思うでしょう)EXEに追加しますが、一度実行すると、コードをデバッグできなくなります。VSデバッガーは、元のEXE用に生成された元のPDBファイルの受け入れを拒否します。これは、おそらくILMergeステップがチェックサムを更新するかGUIDを変更するためです。

私が疑問に思うのは、これを回避する方法があるかどうかです..ほとんど知られていないILMergeオプションのように、多分?それは、デバッグ能力の非常に一般的で不必要な喪失として私を襲います。

ローカリゼーション後にこのようなアプリをデバッグする他の唯一の方法は、ローカリゼーションコード自体をデバッグする場合を除いて、ILMergedを解除したDLLを使用する並列ビルドオプションを維持することです。これは問題ありません(たとえば、私)。 。その後、あなたは本当に運が悪いです。誰か他のオプションを考えることができますか?

Costuraも使用してみましたが、ローカリゼーションDLLにはすべて同じ名前の(メインリソースのAppName.resourceと同じ)リソースが含まれているため、そのようなDLLを参照に追加できるのは1つだけです。それ以降のDLLは許可されません。Costuraをギミックして機能させる方法はありますか?(ただし、動作させることができれば、組み合わせはVisual Studioビルドの一部であるため、PDBの問題は発生しない可能性があります。.?)

編集:PDB/EXEの一致をもたらすアイデアを探しています。16進エディタでpdbをハックできることを理解しています。ただし、この質問では、システムを意図したとおりに機能させる方法について具体的に尋ねています。

4

2 に答える 2

1

ILMerge は、マージされた pdb も生成します。このオプションをオフにしていますか、またはマージされた pdb も機能していませんか?

于 2012-11-03T02:08:57.540 に答える
0

PDB ファイルと EXE の両方に GUID があります。GUID が一致しない場合、デバッガーは PDB ファイルの読み込みを拒否します。GUID が一致するように 2 つのファイルのいずれかを手動で編集すると、PDB ファイルが読み込まれます。これにより、逆アセンブリでシンボル情報が正しくなくなる可能性があります。

于 2012-10-12T19:55:53.560 に答える