問題タブ [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.
visual-studio-2010 - VS2010 でラムダを含むアセンブリをマージすると ILMerge が壊れますか?
ILMerge を使用して VS2010 でアセンブリをマージしようとしましたが、結果のプライマリ アセンブリが使用できなくなります。これは、マージされるアセンブリに Lambda 式を含むメソッドが含まれている場合にのみ発生するようです。また、VS2008でも問題なく動作するようです。
調査の概要をここで詳しく説明しました。
これを解決する方法についての洞察は大歓迎です。
debugging - ILMergedアセンブリにデバッグするにはどうすればよいですか?
概要
ILMergeの呼び出しが呼び出され、ビルドが単一のアセンブリになるように、2アセンブリソリューションのビルドプロセスを変更したいと思います。さらに、結果のアセンブリにデバッグできるようにしたいと思います。
準備-簡単な例
- 新しいソリューション-ClassLibrary1
- 文字列「Helloworld」を返す静的関数「GetMessage」をClass1に作成します
- ClassLibraryを参照する新しいコンソールアプリを作成します。
- コンソールを介してmain()からGetMessageを出力します。
これで、「HelloWorld」をコンソールに出力する2つのアセンブリアプリができました。
では、次に何を..?
コンソールアプリのビルドプロセスを変更して、ILMergeを使用するビルド後の手順を含め、ClassLibraryアセンブリをコンソールアセンブリにマージしたいと思います。
このステップの後、私は次のことができるようになるはずです。
- ClassLibrary1.dllが存在しない状態で、コンソールアプリを直接実行します
- VSでF5(またはF11)を介してコンソールアプリを実行し、2つのプロジェクトのそれぞれにデバッグできるようにします。
限られた成功
私はこのブログ投稿を読み、ビルド後のコマンドで後のマージを達成することができました...
...そして以下を読み取るILMerge.batファイル...
これはかなりうまく機能し、実際には、必要に応じてVS環境の外部で実行されるexeを生成します。ただし、VSがコードにデバッグするために使用できるシンボル(.pdbファイル)を生成するようには見えません。
これがパズルの最後のピースだと思います。
誰かが私がこれを機能させる方法を知っていますか?
FWIW x64Win7x64マシンでVS2010を実行しています。
更新:なぜこれをしたいのですか?
「デバッグシナリオ中に本当にILMergeを実行する必要がありますか?」
私のソリューションのアセンブリは、他のソリューションのアセンブリと同じフォルダーに共存する必要があります(そのうちのいくつかは開発する可能性があります)
これらのソリューションの一部は、一部のアセンブリの異なるバージョンへの依存関係を共有します。
したがって、Solution1はConsole1とClassLibrary1.dll(v1)で構成され、Solution2はConsole2とClasslibrary1.dll(v2)で構成されている可能性があります。
すべてをGACに登録するのではなく、衝突を回避するために、正しいバージョンの依存関係をソリューションのプライマリアセンブリにILMergeできると思いました。
ただし、これにより、現在、ソリューションをデバッグできなくなります。これは、存在する他のソリューションと組み合わせて実行する必要があります。
これは複雑に聞こえますか?それはそうだからです..:D
.net - ILMerge とプロジェクトのリファレンス
次の構造を持つ VS ソリューション (.sln) があります。
- プロジェクトA
- プロジェクト B (プロジェクト A への参照と、NHibernate、StructureMap などのサードパーティ アセンブリへの参照が含まれます)
ILMerge を使用して、サード パーティのアセンブリを ProjectB.dll にまとめたいと考えています。ただし、ProjectA をマージしたくありません。
ここで強調表示されている手順を使用しました。これは、サードパーティのアセンブリの統合に関してシームレスに機能しました。ただし、ProjectB のビルド時にまだこのエラーが発生します。
マージ中に例外が発生しました: 未解決のアセンブリ参照は許可されていません: ProjectA.
ProjectA をマージすることを明示的に指定しているわけではありません。言い換えれば、私はこのプロジェクトに当てはまるとは言いません。IlMerge で ProjectA を無視するにはどうすればよいですか? ちなみに、ProjectA はプロジェクト参照であり、直接のアセンブリ参照ではありません。
ありがとう!
.net - ILMergeエラーでビルド
IlMergeでこのエラーが発生した人はいますか?4.0フレームワークを使用して.NETプロジェクトのいくつかのアセンブリをマージしようとしています。
ILMerge / log / lib:.. \ Libraries / targetplatform:v4 / internalize:.. \ SolutionFiles \ CJCommon.exclude / ndebug / out:bin \ Release \ Common.dll obj \ Release \ Common.dll C:\ Development \ CJCommon \ Libraries \ FluentNHibernate.dll C:\ Development \ CJCommon \ Libraries \ HibernatingRhinos.Profiler.Appender.dll C:\ Development \ CJCommon \ Libraries \ Iesi.Collections.dll C:\ Development \ CJCommon \ Libraries \ log4net.dll C: \ Development \ CJCommon \ Libraries \ Microsoft.Practices.ServiceLocation.dll C:\ Development \ CJCommon \ Libraries \ NHibernate.ByteCode.Castle.dll C:\ Development \ CJCommon \ Libraries \ NHibernate.dll C:\ Development \ CJCommon \ Libraries \ NHibernate.Linq.dll C:\ Development \ CJCommon \ Libraries \ StructureMap.dll
mscorlib.dllのディレクトリ「C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 .. \ v4.0.20107」を使用して、プラットフォームを「v4」に設定します
マージ中に例外が発生しました:
オブジェクト参照がオブジェクト インスタンスに設定されていません。
C:\ Program Files(x86)\ MSBuild \ Ilmerge.CSharp.targets(8,5):エラーMSB3073:コマンド "" C:\ Program Files(x86)\ Microsoft \ Ilmerge \ Ilmerge.exe "/ log / lib :".. \ Libraries" / targetplatform:v4 /internalize:./.exited with code 1 .. ..
..。
==========すべて再構築:3回成功、1回失敗、0回スキップ==========
.net - アセンブリを埋め込むためのILMergeまたはResolveAssembly間の欠点、利点など?
現在、アセンブリを 1 つのアプリケーション ファイルに埋め込む 2 つの方法を知っています。ILMerge と ResolveAssembly イベントの使用です。
誰かが他のものよりも成功したかどうか知りたい.
これらのいずれか (パフォーマンス、セキュリティなど) を使用することによる欠点はありますか?
私の観点からは、すべての「プライベート」アセンブリを常にアプリケーションにマージする必要があるように見えます。これは、アプリケーションを全体として考えると、この方法の方がクリーンであるためです。
何かご意見は?
dll - DLL と .cs ファイルをマージする
大きなプロジェクトの一部は、再利用したい支払いシステムです。この支払いシステムのすべてのクラス ファイルを DLL にマージして、他のすべてのプロジェクトで参照として追加したいと考えています。現在の支払いシステムは、商用アプリケーションの DLL からの名前空間も使用しています (nsoftware-paypal など)。csc で個々のファイルを DLL にコンパイルしようとしましたが、うまくいきませんでした。ILMergeも試しましたが、これもうまくいかないようです。
CSC
.cs ファイルは nsoftware-Paypal の DLL の名前空間を使用するため、.cs と共に DLL ファイルを csc コマンドに含めました。「...nsoftware.InPayPal.dllはテキストファイルではなくバイナリファイルです」というエラーが表示されます。Paypal DLL なしでコンパイルしようとすると、「nsoftware という名前の型または名前空間が見つかりません」というエラーがスローされます。
ILMerge は .cs ファイルも許可しません (もちろんアセンブリではないため)。
私がする必要があるのは、このシステム全体の 1 つ (または複数) の DLL を生成して、他のプロジェクトで使用できるようにすることだけです。
可能?
c# - アセンブリをマージする無料のプログラム(ILMergeなど)はありますが、wpfで動作しますか?
ILMergeを使用してwpfアセンブリをマージする運はありませんでした。
.net - Windows 7 64 の .NET ILMerged DLL での BadImageFormatException
Visual Studio 2008 を使用して Windows 7 64 ビットで開発しています。ILMerge を使用して単一の DLL にマージするクラス ライブラリのコレクションがあります。ただし、このマージされた DLL を使用しようとすると、
[ BadImageFormatException : ファイルまたはアセンブリ 'MyMergedDll' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。]
私はこれに関するヘルプを探していましたが、MyMergedDll の各プロジェクトで Build プロパティを x86 をターゲットに設定する必要があるように見えたので、そうしました。また、MyMergedDll を参照している Web サービスで、MSTest 以外のすべてのプロジェクトを x86 をターゲットに設定しました。ただし、まだこのエラーが発生しています。
このブログ エントリが信じられるとすれば、次の実行の結果としてこのエラーが発生する可能性があります。
つまり、ジェネリックにクラス制約があります。ただし、ブログのエントリは 2007 年のものなので、それが今も当てはまるかどうかはわかりません。プロジェクト内のすべてのジェネリック クラスを追跡して制約を確認する前に、StackOverflow から問題の原因について意見を求めました。
問題があれば、MyMergedDll は厳密な名前で署名されています。コンソール アプリケーションと Web サービスの両方で MyMergedDll を使用しようとしています。Web サービスを再構築するたびに IIS が更新されているかどうかによって、状況が複雑になるかどうかはわかりません。BadImageFormatException
コンソール アプリケーションでは、Release モードでビルドしたときにしか取得できないようです。
.net - ILMerge と .NET 4.0 の深刻な問題
私の人生では、.NET 4 アプリケーションを ILMerge と適切にマージすることができないようです。/targetplatform、/lib、/ndebug を設定し、カスタム ILMerge.exe.config ファイルを追加した後でも、出力ファイルは正しく機能しません (マージされたライブラリを「見つける」ことができないようです)。
私はこれとこれを無駄に試しました。構成ファイルを使用しない限り、ビルドすることさえできませんが、実行しても機能しません。構成ファイルがないと、「未解決のアセンブリ参照は許可されていません: PresentationFramework 」というエラー メッセージが一貫して表示されます。
ビルド後のイベントとして使用されている ILMerge コマンドの現在の状態を次に示します。
私が間違っていることについて何か考えはありますか??
c# - アセンブリ参照の問題-「アセンブリが参照されていません」と2つのアセンブリのタイプ
アセンブリ参照に問題があります。私は4つのアセンブリを持っています:
- EncryptionUtilsと呼ばれるクラスライブラリ
- EncryptionUtilsを使用するPasswordUtilsと呼ばれる別のクラスライブラリ
- EncryptionUtilsを含む多くのライブラリのILMergeであるToolkitと呼ばれる別のクラスライブラリ
- ToolkitとPasswordUtilsを使用するWPFアプリケーション
WPFアプリで、EncryptionUtilsへの参照を含めないと、次のエラーが発生します。
タイプ'EncryptionUtils.RSAPublicKey'は、参照されていないアセンブリで定義されています。アセンブリ'EncryptionUtils、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null'への参照を追加する必要があります。
ただし、PasswordUtilsとToolkitの両方が構築されたものとまったく同じEncryptionUtilsへの参照を追加すると、次のエラーが発生します。
タイプ「EncryptionUtils.MyClass」は「c:... \EncryptionUtils.dll」と「c:...\Toolkit.dll」の両方に存在します
このキャッチ22から抜け出すにはどうすればよいですか?Toolkitを構成するすべての個別のライブラリをWPFアプリに追加する必要がありますか?