問題タブ [ilmerge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
localization - ILMerge とローカライズされたリソース アセンブリ
コンパイル時の構造が次のようなアプリケーションがあります。
- フー
- nb-いいえ
- Text.resources.dll
- sv-SE
- Text.resources.dll
- Bar.dll
- Foo.exe
- テキスト.dll
- nb-いいえ
これで ILMerge を使用することは可能ですか? どうやってそれをしますか?
.net - マージされたアセンブリの .NET 型定義 (ILMerge)
ILMerge を使用して、いくつかのサード パーティ アセンブリを含むいくつかの .NET アセンブリをマージしています。そうして以来、いくつかのエラーが発生しましたが、それらはすべて、型定義がそれらが定義されているアセンブリに関連付けられているという事実に帰着します。
簡単な例は、私の App.config の log4net config セクション定義です。マージされたアセンブリにマージされると log4net アセンブリが存在しないため、 type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" を使用します。大したことではありませんが、アセンブリ名をマージされたアセンブリに変更すると、正常に動作します。
もう少し複雑な例は、バイナリのシリアル化された型です。私のシステムでは、バイナリ シリアル化を使用してプロセス間で特定のオブジェクトを送信しています。シリアル化可能なオブジェクトはすべて、他のすべてのプロジェクトが参照する共通のアセンブリで定義されます。デフォルトのバイナリ シリアル化を使用していましたが、オブジェクトをシリアル化したマージされたアセンブリが見つからないというエラーでオブジェクトを逆シリアル化するときに失敗し始めました。繰り返しますが、大したことではありませんが、指定されたアセンブリだけでなく、読み込まれたアセンブリの型を検索するカスタム SerializationBinder を実装しました。
シリアル化された型が他のシリアル化可能な型を参照する場合、前の例はより複雑になります。私はますます対処が難しくなっている問題に遭遇し続けてきました。
ここで私が理解しようとしている点は、.NET 型システムと ILMerge がうまく連携していないように見えるということです。この問題をどのように解決したかについて、経験のある人はいますか? .NET ランタイムに、型がどのアセンブリにあるべきかを気にせず、どこかを探すだけでよいと伝えることはできますか?
注: アセンブリをマージする理由を尋ねる返信はしないでください。それはこの質問のポイントではありません。
visual-studio - VS セットアップ プロジェクトで、プロジェクトの依存関係を MSI から除外するにはどうすればよいですか?
私はC#で働いています。私は4つのプロジェクトを持つ小さなVSソリューションを持っています:
- DLL
- DLL を参照する EXE
- 前の 2 つの手順からのアセンブリに対して ILMerge を実行するだけのマージ プロジェクト
- Merge プロジェクトの .EXE 出力をパッケージ化するセットアップ プロジェクト。(「プロジェクトのプライマリ出力」をセットアップに追加し、ここで Merge プロジェクトを指定しました)
問題は、セットアップ プロジェクトがプロジェクト #1 と #2 をプロジェクト #3 の依存関係として自動的に検出することです。3 番目のプロジェクトのプライマリ出力を MSI (セットアップ プロジェクト) に含めると、依存関係も自動的にドラッグされます。私はこれをしたくありません。
どうすればそれを止めることができますか?
「除外フィルター」を指定してみましたが、うまくいきませんでした。何を試しても、依存関係は常に引きずり込まれました。
Setup.vdproj を手動で変更して、自動検出された依存関係プロジェクトを削除しようとしましたが、VS で .vdproj を再ロードすると、自動検出された依存関係が戻ってきました。
ヘルプ?
c# - ILMerge DLL: アセンブリが正しくマージされず、まだ外部参照としてリストされている
.NET C# ツールのビルド プロセスでは、ILMerge を使用してアセンブリを 1 つの exe にマージしています。
最近、新しいクラス ライブラリを追加しましたが、ILMerge が失敗しています。新しいDLLにマージするように指示することを忘れていません!
それは今、私が本当に理解していないこのエラーを私に与えています:
ILMerge.Merge: アセンブリ 'DataObjects' が正しくマージされませんでした。これは、ターゲット アセンブリの外部参照としてリストされたままです。
「プロジェクト」参照を使用して行ったアセンブリ参照はすべて、過去に失敗したことはありません。
誰でもこのエラーを説明できますか、または回避策を提案してください。
.net - ILMerge を使用して XML ドキュメント ファイルを DLL とマージする方法は?
PDB を DLL ファイルとマージできることはわかっていますが、XML ドキュメント ファイルでも同じことをしようとしています。
.NET アセンブリを含む .xml ファイルがなくても、IDE にドキュメントがあるため、可能です。
これを行う方法?
.net - Sgen と ILMerge を使用した XmlSerializers の事前生成。配列の問題
私は XmlSerializer を広範囲に使用しており、.NET が実行時に必要なシリアル化アセンブリを生成できるようにするのではなく、事前にこれらのアセンブリを生成してアプリケーションにバンドルしたいと考えています。Sgen を使用して、ビルド時にこれらのアセンブリを生成できます。さらに、シリアル化する配列の種類ごとに Sgen を個別に実行する必要があります (sgen /t:Foo[] を使用)。最後に、ILMerge を使用して、配列型のシリアル化クラスを Foo.XmlSerializers.dll アセンブリにマージします。Foo.XmlSErializers.dll に実際にマージされたすべてのクラスが含まれていることを ildasm で確認しました。
実行時に、.NET は、csc を呼び出して一時アセンブリを生成することなく、Foo.XmlSerializers.dll から FooSerializer を正常に読み込みます。ただし、.NET は同じ dll から ArrayOfFooSerializer をロードできず、実際には csc を呼び出します。
配列のシリアル化タイプを事前に生成するにはどうすればよいですか?
次の 2 つのアセンブリとその簡略化された内容を考えてみましょう。
アセンブリ: MyApp.exe
アセンブリ: Foo.dll
詳細情報:
次の app.config により、XmlSerialization 関連のイベントがイベント ログに追加されます。
Foo タイプのイベントはありません。Foo[] に対して次のメッセージが表示されます。
事前に生成されたシリアライザー 'Foo.XmlSerializers' の有効期限が切れました。「Foo[]」のシリアライザーを再生成する必要があります。
resharper - 再シャーパーに表示されないILMergedクラス
私はいくつかのアセンブリをILMergedしました。例えば:
- Foo.Bar
- Bar.Foo
- Foo.Baz
1つのアセンブリに。例えば:
- FooBarBaz.Merged
そしてそれは動作します。つまり、FooBarBaz.Mergedを参照し、コードでFoo.Bar.MyClassのようなものを使用すると、正常にコンパイルされます。
ただし、Resharper(v5)は機能しません。マージされたアセンブリからの任意のタイプの使用法は、血のように赤いです。さらに悪いことに、これらのタイプについてもインテリセンスが得られません。基本的に、このアセンブリはResharperと共存できません。
これを治すことができるILMergeパラメータがあるのだろうか。ILMergeのドキュメントはかなりよく隠されていますが、私はこれを見つけました。私はさまざまなスイッチをハッキングしました...無駄に。
または、変更できるResharper設定はありますか。これはOSSプロジェクトであるため、私はこれを行う必要がないことを本当に望んでいます。
visual-studio - マージされた DLL、Intellisense が個別の XML ドキュメント ファイルを取得しない
ILMerge を使用して、いくつかの C# プロジェクト DLL をソリューション全体の 1 つの DLL にマージします。各プロジェクトで Intellisense 用のドキュメントの .XML ファイルを作成していますが、マージした DLL を別のソリューションで参照として使用しようとすると、これらのコメントが表示されません。これらのファイルはすべて同じディレクトリにあります。
- MergedProjectDlls.dll
- Project1.XML
- Project2.XML
- Project3.XML
- Project4.XML
単一のプロジェクト XML ファイルの名前を MergedProjectDlls.XML に変更してから、Visual Studio で参照を削除して再度追加しようとしましたが、Intellisense は、名前を変更したプロジェクト XML ファイルにあることがわかっているコメントをまだ認識していませんでした。
とにかく、これらすべてのプロジェクト XML ファイルを MergedProjectDlls.XML というタイトルのファイルにマージしたいと考えていました。それは可能ですか?それが MergedProjectDlls.dll と同じディレクトリにある場合、Intellisense はそれを自動的に取得しますか?
編集:MSDNでこれを見つけました:
生成された .xml ファイルを IntelliSense 機能で使用するには、.xml ファイルのファイル名をサポートするアセンブリと同じにし、.xml ファイルがアセンブリと同じディレクトリにあることを確認します。したがって、アセンブリが Visual Studio プロジェクトで参照されると、.xml ファイルも検出されます。
また:
/target:module でコンパイルしない限り、ファイルには、コンパイルの出力ファイルのアセンブリ マニフェストを含むファイルの名前を指定するタグが含まれます。」
c# - ILMerge:対応するapp.configを構成する方法
ILMergeを使用して、アプリケーションと必要なライブラリを1つの実行可能ファイルにマージしようとしています。テストを行うためだけにコマンドラインを使用しています。サンプルプロジェクトを取りました:
これは意図したとおりに機能するようです。しかし、もし私が持っていたらProgram.exe.config
?それでも適用できますか?
誰かがこれを達成する方法はありますか?
f# - ILMergeでジェネリック型の重複を許可する
ILMergeのドキュメントによると、競合するタイプのアセンブリをマージできます。FSharp.Core.dllとSystem.Reactive.dllをマージしようとしていますが、このためのコマンドラインパラメーターを理解できません。
ILMergeは、の競合するバージョンについて不平を言っていますSystem.IObservable<T>
。この競合を解決するためにどのようにそれを伝えることができますか。
よろしくお願いします、forki