2

ILMerge は何をしますか?

単一の新しいアセンブリを作成しますか、それとも複数のアセンブリを 1 つの dll に入れるだけですか?

以下の観点から質問します。

  • InternalsVisibleTo相互に属性を持つアセンブリをマージするとどうなりますか?
  • 完全修飾アセンブリ名の文字列からリフレクションを行っているとどうなりますか

ありがとう

4

1 に答える 1

7

アセンブリをマージすることと、すべてを 1 つのファイルに入れることの間に、どのような違いを描こうとしているのかわかりません。ただし、一連の .Net アセンブリを取得し、すべてのアセンブリの結合されたコンテンツを含む単一のアセンブリを生成します。

これは、InternalsVisibleToマージされるアセンブリの属性には影響しません。この属性はinternal、アセンブリ間のコンストラクトへのアクセスを許可するためにランタイムによって使用されます (それ以外の場合は不正です)。internalそれらはすべて 1 つのアセンブリに含まれているため、 を使用せずに互いの型に自由にアクセスできますInternalsVisibleTo。つまりinternal、マージ前に有効だったアクセスは、マージ後も有効になります。

リフレクションと完全修飾アセンブリ名の意味がわかりません。しかし、私が考えることができる2つのケースがあるようです

  1. 実行時に型アセンブリ修飾名を取得します。これでも問題なく動作しますが、元のアセンブリ名ではなく、マージされたアセンブリ名が取得されます
  2. 型のアセンブリ修飾名をプロジェクトにハード コーディングします。マージの前にアセンブリ名を使用すると、そのタイプが存在しなくなるため、問題が発生します。
于 2010-10-27T15:30:53.940 に答える