動作するためにODBCコネクタをコンピュータにインストールする必要があるアプリケーションを作成しました。私のアプリケーションはmysqlデータベースに接続する必要があるため、動作するのに必要なdllファイル(MySql.Data.dll)は1つだけです。
このdllをアプリケーションと同じ場所に置くと、問題なく動作します。このdllをマージして、最後に実行可能ファイルを1つだけにするようにしますか?
この依存DLLを実行可能ファイルとマージするにはどうすればよいですか?
それはできません。すべてのアセンブリがどこかから参照されます...
System.Net.dll
すべての.NETアプリを実行するには.NETFrameworkアセンブリが必要です。そのため、アプリを実行するユーザーには.NETFrameworkがインストールされている必要があります。したがって、アプリはこのアセンブリの場所を認識しており、たとえば、System.Net.dll
実行を成功させるためにアセンブリをアプリの同じパスに配置する必要はありません。
アプリは、実行する.NET Frameworkアセンブリの場所を知っていますが、待ってください。実行するには追加のdllも必要なのでMySql.Data.dll
、アプリをコンパイルするときに同じパスを取得するのはそのためです。
考えられる解決策:
1.実行可能ファイルを1つだけ作成する場合は、Spoon Studioを使用してみてください(完全にクラックされたバージョンを見つけるのは難しく、購入するには費用がかかります)。これにより、必要なアセンブリやすべての.NET Frameworkなどのアセンブリを埋め込むことができるため、アプリを実行するユーザーコンピューターでの.NETFrameworkのインストールや必要なアセンブリにアプリが依存しなくなります。
2.を使用してみてください。ILMerge
ただし、コードが要件に適合しているかどうかを確認するには、以下のリンクをお読みください。
方法と重要な情報:
http://www.codeproject.com/Articles/9364/Merging-NET-assemblies-using-ILMerge
純粋な.NETモジュールの場合は、ilmerge
ユーティリティを試すことができます。