3

ILMerge を使用して、いくつかの推移的に参照されるアセンブリを参照しているアセンブリに内部化して、プロジェクト内の他の推移的な依存関係との競合を排除しようとしています。

特に、Antlr3.StringTemplateを参照しています (以降、AS と呼びます。ここから入手できます: http://www.stringtemplate.org/download.html )。Antlr3.Runtime.Debug (ARD) とAntlr3.Runtime (AR)を参照します。ARD自体もARを参照しています。アスキー アートでは、次のようになります。

AS ---> ARD
\        |
 \       v
  \---> AR

私が使用している別のアセンブリである NHibernate 2.1 は、互換性のない別のバージョンの AR に依存しているため、ILMerge を使用して AR をマージし、AS に組み込みたいと考えました。理論的には、これでうまくいくと思います。ただし、理論を実行するのに問題があります。

どのような順列やオプションを試しても、次の形式のエラーが発生します。

ILMerge.Merge: アセンブリ 'Antlr3.Runtime.Debug' が正しくマージされませんでした。これは、ターゲット アセンブリの外部参照としてリストされたままです。

ILMergeで達成しようとしていることは可能ですか?

4

3 に答える 3

5

コマンドラインから(またはMSBuildタスク内で)ILMergeを実行すると、マージ対象としてリストされているすべてのアセンブリファイルのうち、マージの開始時にプライマリアセンブリと見なされるのは最初のファイルです。まだ行っていない場合は、ASアセンブリファイル名がマージアセンブリのリストの最初にリストされていることを確認してください。

于 2009-09-18T00:46:13.367 に答える
5

ILMerge の最新バージョンに/closedは、マージされたアセンブリの推移的な閉鎖で機能するオプションがあります。これはまさにこの問題を解決します (セクション2.6 Closed4.1 Input assembly not merged in correctlyILMerge.doc ユーザー マニュアルを参照)。

于 2010-09-16T16:59:51.043 に答える
0

Nhibernate に関連するすべての .dll を 1 つに ILMerge して、StringTemplate とうまく連携させる必要がありました。おそらくあなたが望んでいた答えではありませんが、うまくいきます。

于 2010-11-29T10:05:17.343 に答える