3

いくつかの dll をマージする必要があり、ファイル名とアセンブリ名の両方をメインの dll (mydll.dll) と同じにする必要があります。pdb ファイルも必要です。どうすればこれを完了できますか?

ここに私が試したいくつかのことがあります:

  • ILMerge mydll.dll を使用してください .... /out:mydll.dll これは、「パスへのアクセス ...mydll.pdb が拒否されました」で失敗します。

  • mydll.dll の名前を mydllTemp.dll に、mydll.pdb を mydllTemp.pdb に変更してから、ILMerge mydelltemp.dll .... /out:mydll.dll これは、「...mydlltemp.dll に関連付けられている pdb が古くなっています」で失敗します。これは、ilmerge がアセンブリ名を調べて pdb を見つけたためだと思います。そのため、名前が変更された mydll.pdb を探します。

  • mydll.dll の名前を mydllTemp に変更してから、ILMerge mydelltemp.dll .... /out:mydll.dll これはエラーなしで動作しますが、デバッガーをプロセスにアタッチするとトリガーされません

  • ILMerge mydll.dll ... /out:mydlltemp.dll mydlltemp.dll を mydll.dll に、mydlltemp.pdb を mydll.pdb に名前変更します。これで、ブレークポイントがトリガーされているプロセスにデバッガーをアタッチできます。ただし、アセンブリ名は mydll ではなく mydlltemp になりました。

では、どうすればこれを機能させ、元のアセンブリ名を持つことができますか?

4

2 に答える 2

2

これが標準的な開発の過程にあるのか、それともビルド プロセスの一部なのかについては言及していませんでした。

標準開発の場合、テストのためだけにすべてをマージする必要がありますか?

ビルド プロセス用の場合は、出力を別のディレクトリ (おそらく最初に mkdir する必要があります) に移動してから、同じアセンブリ名を再利用できます。

于 2012-10-15T18:13:08.720 に答える
1

別のディレクトリにマージするには、/ out:somedir\mydll.dllを使用します

于 2013-03-07T09:07:10.637 に答える