2009-08-27 11 views
1

ILMergeを使用して、推移的に参照されているアセンブリを、私が参照しているアセンブリに内部化して、プロジェクト内の他の推移的な依存関係との競合を解消しようとしています。推移的なアセンブリ参照をILMergeと正常にマージできますか?

特に、私はAntlr3.StringTemplate(以下、ASと呼ばれ、http://www.stringtemplate.org/download.html)を参照しています。それは、Antlr3.Runtime.Debug(ARD)とAntlr3.Runtime(AR)を参照しています。 ARD自体もARを参照しています。 ASCII-技術では、それはです:私が使用している別のアセンブリ、NHibernateの2.1は、ARの異なる、互換性のないバージョンに依存

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

ので、私は合併し、ASにARを内部化するためにILMergeを使用していました。理論的には、これはうまくいくと思います。しかし、私は理論を実行することに問題があります。

どんなに私がしようとするもの順列やオプション、私は次の形式のエラーで終わるん:

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

ILMergeで達成しようとしていることはありますか?

+0

受け取ったエラーメッセージが推移的なアセンブリ参照によるものだとする証拠はありますか?あなたが提供した情報から、それはILMergeの単なるバグであるように思えます。これは、これと同じバグかもしれません:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=320999&wa=wsignin1.0 – Timwi

答えて

4

コマンドライン(またはMSBuildのタスク内)からILMergeを実行すると、あなたがマージされるアウトリストのすべてのアセンブリファイルを、それがマージ主要アセンブリ考えられている最初一つです開始されます。まだ作成していない場合は、ASアセンブリファイル名が、マージするアセンブリのリストの最初に表示されていることを確認してください。

5

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

0

Nhibernate関連のすべての.dllをILMergeして、StringTemplateでうまく座れるようにしました。おそらくあなたが望んでいた答えではありませんが、それは機能します。

関連する問題