私はSQLiteを含むC#で単一実行可能アプリケーションを作成しようとしています。 System.Data.SQLiteはアンマネージDLL(SQLite.Interop.dll)に依存しているため、ILMergeとマージすることはできません。System.Data.SQLiteを単一の実行可能プログラムにマージするにはどうすればよいですか?
System.Data.SQLiteをプロジェクトにバンドルすると、タグ付きDLLなしで単一実行可能アプリケーションを作成できますか?
私はSQLiteを含むC#で単一実行可能アプリケーションを作成しようとしています。 System.Data.SQLiteはアンマネージDLL(SQLite.Interop.dll)に依存しているため、ILMergeとマージすることはできません。System.Data.SQLiteを単一の実行可能プログラムにマージするにはどうすればよいですか?
System.Data.SQLiteをプロジェクトにバンドルすると、タグ付きDLLなしで単一実行可能アプリケーションを作成できますか?
埋め込みリソースとして実行可能ファイルにdllを含めることができます。その後、実行時に展開します(これは、dllを解凍するディレクトリに書き込み権限を持っていることを前提としています)。
、あなたのアプリケーションのインストールファイルを作成しないのはなぜ
string sqllitefile = "sqllite.dll";
Assembly currentAssembly = Assembly.GetExecutingAssembly();
using (FileStream fs = fileInfoOutputFile.OpenWrite())
using (Stream resourceStream =currentAssembly.GetManifestResourceStream(sqllitefile))
{
const int size = 4096;
byte[] bytes = new byte[4096];
int numBytes;
while ((numBytes = resourceStream.Read(bytes, 0, size)) > 0)
{
fs.Write(bytes, 0, numBytes);
}
fs.Flush();
fs.Close();
resourceStream.Close();
}
ような何か? – Serghei
できません。あなたが言ったように、それは管理されていないDLLに依存します。アンマネージドdllは、単一の実行可能ファイルにマージすることはできません。 –
@Sergheiインストーラでシステムの周りにDLLを作成すると、コードをバグフリーにすることが難しくなります。 1つの実行可能ファイルで、ユーザーが最新のバージョンを持っていることを知っている場合、ユーザーはそれを置き換えます。インストーラにすべての適切なDLLが含まれているかどうか、およびそれらがすべて置き換えられているかどうかは心配する必要はありません。また、わかりやすいアプリケーションを実行するためにウィザードを通過する必要がないのは、より優れたユーザーエクスペリエンスだと思います。 – spiffytech