4

まず、これが ILMerge の問題かどうかはわかりませんが、アプリケーションに .dll ファイルをマージできません。コマンドラインでこれを試しました:

ilmerge /target:winexe /out:test.exe MyApp.exe lib1.dll lib2.dll lib3.dll

次のエラーが発生しましたが、それが何を意味するのかわかりません。

MyApp のメタデータでエラーが報告されました。D:\C#\source\bin\ReleaseMyApp.exe に関連付けられている pdb は古くなっています。

ところで、私は最新バージョン (2.10.526.0) を使用していますが、これを機能させることができず、本当に助けが必要です。上記のエラーは何を意味し、どうすれば修正できますか?

4

3 に答える 3

5

D:\C#\source\bin\ReleaseMyApp.exe に関連付けられている pdb は古くなっています。

pdbとexeが同期していることを確認したと明示的に言っていないので、明らかな質問をするでしょう-フォルダーにpdbがあり、ファイルのタイムスタンプを確認しましたか?

私が理解しているように、ソース ファイルに使用可能なデバッグ情報がある場合、ilmerge はターゲットのデバッグ情報を作成し、元のファイルが古くなっている場合は、誤った情報を生成するのではなく、おそらくこのエラーを表示します。

デバッグ情報が必要ない場合、pdb ファイルを削除するとどうなりますか?

于 2011-01-08T19:57:41.217 に答える
0

ILMerge の代わりに.NETZを試すと役に立ちますか?

于 2011-01-08T19:37:54.097 に答える
0

このタイプのメタデータは、おそらく明示的なコードで文字列として保存されていると思いますが、おそらく属性の「typeof」を介して保存されています。

AppDomain の TypeResolve イベントを処理して、失敗している型文字列を検出し、目的の Type を返すことを試みることができます。これは、別のアセンブリにあるという事実を回避する必要があります。

http://msdn.microsoft.com/en-us/library/system.appdomain.typeresolve.aspx

于 2011-01-08T19:17:43.177 に答える