System.Data.SQLite.dll
以前は、メイン メソッドでこれを呼び出してファイルを動的にロードしていました。
static void Main(string[] args)
{
try
{
string resource1 = "System.Data.SQLite.dll"; //
string resource2 = "Ionic.Zip.Reduced.dll";
EmbeddedAssembly.Load(resource1, "System.Data.SQLite.dll");
EmbeddedAssembly.Load(resource2, "Ionic.Zip.Reduced.dll");
//
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
catch (Exception E) { File.AppendAllText("myExcept.txt",E.Message); }
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return EmbeddedAssembly.Get(args.Name);
}
EmbeddedAssembly.cs は、codeproject のこのリンクで見つけたクラスです。
以前にこの方法を使用したことがあり、うまくいきましたが、今は c# コードから cs ファイルを動的にコンパイルする必要がありますSystem.Data.SQLite.dll
。
...
String exeName = "myFile.exe"
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = true;
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("System.Data.dll");
// add reference
cp.ReferencedAssemblies.Add("System.Data.SQLite.dll");
// add embedded resources
cp.EmbeddedResources.Add(@"System.Data.SQLite.dll");
...
しかし、実行可能ファイルを生成した後でも、ファイルに依存するSystem.Data.SQLite.dll
ため、このファイルを Exe と同じフォルダーに配置しないと、ファイルが機能しません。
私を混乱させたもう1つのことは、ファイルIonic.Zip.Reduced.dllが正しくロードされているSystem.Data.SQLite.dll
のに例外がスローされていることです:
Cannot load file or assembly 'System.Data.SQLite, Version=1.0.86.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. The specified file cannot be found
私が間違っていることは何ですか?