0

私は SQLite 用のクラス ライブラリを構築しています。プロジェクトを構築すると、System.Data.SQLite.dll はスタンドアロンの dll ファイルとして提供され、System.Data を追加した単一の dll ファイルでクラス ライブラリとマージする必要があります。 .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

2つから1つのアセンブリを作成する場合は、 ILMergeを試すことができます。

于 2013-02-06T22:35:04.230 に答える
0

これは最終的に失敗します。System.Data.SQLite は、SQLite.Interop.dll の PInvoke ラッパーです。これは、.net で解決されないアンマネージド DLL です。

于 2013-02-07T02:04:35.410 に答える