問題タブ [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.
c# - wpfを使用してdllを単一の.exeにマージする
現在、多くの依存関係があるプロジェクトに取り組んでいます。埋め込みリソースの場合と同じように、参照されているすべての dll を .exe にコンパイルしたいと思います。ILMergeを試しましたが、.xaml リソースを処理できません。
私の質問は次のとおりです。複数の依存関係を持つ WPF プロジェクトを単一の .exe にマージする方法はありますか?
.net - Visual Stuio のコンパイル設定で、参照されている他の DLL をビルドされたアセンブリに結合する方法はありますか?
配布したい EXE がありますが、それに関連するすべての DLL を (一種の) 一緒に出荷したくありません。
現在、.NET Reactor を使用してそれらをすべてまとめてパッケージ化しています。
しばらく前に ILMerge を試して同じことを達成しましたが、試してみると問題が発生しました。.NET Reactor は決して失敗したことはありません。
Visual Studio のコンパイル設定でこれを実現する方法はありますか?
ビルド アクションで ILMerge への呼び出しをまとめるということでしょうか? もしそうなら、誰かがこれを設定する正しい方法への指針を教えてもらえますか? ILMerge に 2 度目のチャンスを与えたいと思っています。2 年が経ちました..!
.net - 2 つの別々のプロジェクトを維持しながら、それらを 1 つの DLL にマージするにはどうすればよいですか?
ここに欠けている単純なものがあることを願っています。私は2つの別々のプロジェクトを維持しようとしています
これは典型的な Onion アーキテクチャで作成されているため、サービスを疎結合して柔軟性を高めることができます。Infrastructure プロジェクトは Core プロジェクトを参照します。コンパイルすると、これらの DLL が生成されます
しかし、1つのdllだけを生成したいと思います。
ILMerge を使用してこの操作を実行しようとしましたが、Infrastructure は Core を参照するため、Core dll が見つからないため、例外がスローされます。それは明らかに自分自身の中を見ているわけではありません。
コアを参照する他の組み合わせと、次のように結合される別のプロジェクトがあるため、個別のプロジェクトを維持する必要があります。
編集:私の現在のソリューションは、Nant ビルド スクリプトを使用して ILMerge を呼び出します。無事に合流しました。しかし、マージされた DLL を使用しようとすると、Core ライブラリが見つからないため、例外がスローされます。
もう少し明確にするために。コア ライブラリのオブジェクトは使用できますが、インフラストラクチャ ライブラリは使用できません。これらのオブジェクトの 1 つをインスタンス化しようとすると、.NET が依存関係を読み込もうとしているように見えますが、それを見つけることができないためです。
nant - IlMerge 2.9.210.0 のナント タスク
ILMerge 2.9.210 の Nant タスクをどこで入手できるか知っている人はいますか? 私はこのhttp://code.google.com/p/ilmerge-tasks/を試しましたが、ILMerge の ILMerge 2.0.7.28 に対してビルドされています。新しいプロジェクトは ilmerge.xpdm.us にあると書かれています (申し訳ありませんが、新しいユーザーには 2 つのハイパーリンクを投稿できません) が、そのリンクは機能しないようです。他のアイデアはありますか?
.net - 推移的なアセンブリ参照を ILMerge で正常にマージできますか?
ILMerge を使用して、いくつかの推移的に参照されるアセンブリを参照しているアセンブリに内部化して、プロジェクト内の他の推移的な依存関係との競合を排除しようとしています。
特に、Antlr3.StringTemplateを参照しています (以降、AS と呼びます。ここから入手できます: http://www.stringtemplate.org/download.html )。Antlr3.Runtime.Debug (ARD) とAntlr3.Runtime (AR)を参照します。ARD自体もARを参照しています。アスキー アートでは、次のようになります。
私が使用している別のアセンブリである NHibernate 2.1 は、互換性のない別のバージョンの AR に依存しているため、ILMerge を使用して AR をマージし、AS に組み込みたいと考えました。理論的には、これでうまくいくと思います。ただし、理論を実行するのに問題があります。
どのような順列やオプションを試しても、次の形式のエラーが発生します。
ILMerge.Merge: アセンブリ 'Antlr3.Runtime.Debug' が正しくマージされませんでした。これは、ターゲット アセンブリの外部参照としてリストされたままです。
ILMergeで達成しようとしていることは可能ですか?
c# - pdb ファイルを ilmerge でマージする方法はありますか?
さまざまな理由から、ilmerge を使用してすべてのアプリケーション アセンブリを 1 つのファイルにまとめ、ユーザーは 1 つのファイルだけを処理する必要があります。残念ながら、.pdb ファイルをアセンブリとマージする方法はないようです。誰でもそれを回避する方法を知っていますか?
asp.net - .NETアセンブリ形式にサイズ制限はありますか?
私はこれまで経験したことのない興味深い問題に遭遇しました。Visual Studio2008SP1には大規模な実稼働ASP.NET3.5SP1 Webアプリプロジェクトがあり、Webサイト展開プロジェクトを使用してコンパイルおよび展開されます。昨日のチェックイン後、アプリがで重大な失敗を開始するまで、昨年はすべてが正常に機能していましたBadImageFormatException
。
問題のチェックインは特に特別なことは何も変更せず、エラーはアプリの変更されていない領域から発生しています。Reflectorを使用して、問題のあるメソッドを調べ、コードにガベージ文字列が含まれていることを確認しました(.NET Reflectorは漢字としてユーモラスに解釈しました)。これは複数のマシンで一貫して再現されているため、ハードウェアに関連しているようには見えません。
さらに詳しく調べたところ、展開中にaspnet_merge.exeへの入力として使用されたアセンブリにこれらのガベージ文字列が存在しなかったことがわかりました。
aspnet_merge.exe / Web配置プロジェクトの出力アセンブリのプロパティ:
- すべての出力を単一のアセンブリにマージします
- 個々のフォルダの出力をそれぞれのアセンブリにマージします
- すべてのページと制御出力を単一のアセンブリにマージします
- ページごとに個別のアセンブリを作成し、出力を制御します
Web配置プロジェクトのプロパティで、マージオプションを最初のオプション(「すべての出力を単一のアセンブリにマージする」)に設定すると、問題が発生しますが、他のすべてのオプションは完全に機能します。
私の質問:なぜこれが起こっているのか誰かが知っていますか?aspnet_merge.exeの機能にサイズ制限はありますか(結果としてマージされるDLLは約19.3 MBです)?WAPの出力のマージに関する他の既知の問題はありますか?
アセンブリ形式/aspnet_merge.exeの達人が、このような制限について知っていれば、私はそれが大好きです。25MBのアセンブリのように私には思えますが、大きなものですが、とんでもないことではありません。
visual-studio - ILMerge を Visual Studio でいつ、どのように使用するか プロジェクト / ソリューション
中規模のエンタープライズ アプリケーションを開発しています。これには多くのプロジェクト/ソリューションがあります。例えば:
- 会社.データ
- Company.Data.LinqToSql
- Company.Entities (ビジネス オブジェクト)
- 会社.BLL
次に、いくつかのアプリケーションを用意します。たとえば、Windows サービス: MyWindowsService.
これを (セットアップ プロジェクトを作成して) 展開すると、上記のプロジェクトの出力から DLL のロードがインストールされます。
これは、ILMerge を使用する必要がある場所ですか? 1 つのアセンブリを作成するには....たとえば、Company.dll?
これをビルドプロセスに統合するにはどうすればよいですか?
c# - C#ILMergeタイプ'ClassY'のオブジェクトをタイプ'ClassX'にキャストできません
状況は次のとおりです。ILMergeを使用して、このメソッド(custom.dll
)を使用してアセンブリとそのすべての参照を1つの.dllファイルにマージしています。実行時にこのアセンブリを動的にロードするアプリケーションがあります(program.exe
)。アプリケーションとアセンブリの両方で共通のライブラリ(common.dll
)を使用します。抽象クラスClassX
はで定義されcommon.dll
、実装ClassY
はで定義されcustom.dll
ます。program.exe
ClassYをロードしようとすると、custom.dll
例外がスローされます。
タイプ「ClassY」のオブジェクトをタイプ「ClassX」にキャストできません。
コードはこのようなものですがfoo
、単なる新しいClassY()ではなく、動的にロードされます。
なぜそれがこれを行うのか誰かが知っていますか? ClassY
間違いなく実装されClassX
、すべてのアセンブリ/ライブラリバージョンはまったく同じです。