0

我正在为 SQLite 构建一个类库,当我构建项目时 System.Data.SQLite.dll 作为一个独立的 dll 文件出现,我需要将它与我的类库合并到一个单独的 dll 文件中,我添加了 System.Data .SQLite.dll 作为资源然后,添加/现有项,然后将其添加为嵌入资源

然后我把这个静态构造器放在我的命名空间的开头

static SimpleClass()
{
    AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
    {
        if (new AssemblyName(args.Name).Name.ToLowerInvariant() == "System.Data.SQLite")
        {
            String resourceName = "SQLlite." + new AssemblyName(args.Name).Name + ".dll";
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
            {
                Byte[] assemblyData = new Byte[stream.Length];
                stream.Read(assemblyData, 0, assemblyData.Length);
                return Assembly.Load(assemblyData);
            }
        }
        else
        {
            return null;
        }
    };
}

这给了我诸如错误 CS1518 之类的错误:预期的类、委托、枚举、接口或结构感谢你们的任何帮助

4

2 回答 2

0

如果您想从两个组装一个,您可以尝试ILMerge

于 2013-02-06T22:35:04.230 回答
0

这最终会失败。System.Data.SQLite 是 SQLite.Interop.dll 的 PInvoke 包装器,它是一个非托管 dll,在 .net 中无法解析。

于 2013-02-07T02:04:35.410 回答