0

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

私が間違っていることは何ですか?

4

1 に答える 1