我们有一个 C# 应用程序正在使用 SQL CE 3.5 的情况。为了允许遗留程序使用它的一些特性,我们制作了一个 C++ dll,它使用互操作从 C# 程序中提取它需要的信息。为此,C# 程序需要访问数据库。它不是一个非常复杂的场景。
但是,在尝试使用私有安装进行部署时,会出现一些问题。 C#程序没有问题,它可以访问数据库并使用它没有任何问题。
但是,当尝试通过强制 C# 程序访问数据库的 C++ 互操作访问 C# 程序中的函数时,我们会遇到崩溃,异常说“......提供者:System.Data.SqlServerCe.3.5 是未安装”。
这显然是因为我们无法将 App.config 文件添加到正在执行的程序中。
我们怎样才能解决这个问题?还有其他方法可以解决这个问题吗?任何其他形式的 SQL CE 3.5 安装方法都是不可能的。所以我们必须让它发挥作用。
问候,
磷
编辑:
我不是直接针对 SQL CE,而是通过 Linq2SQL。我试图将配置文件添加到我所有的 dll 中,它没有帮助。似乎只有可执行文件是否有 app.config 才重要。
抛出的异常说 - 未安装提供程序 System.Data.SqlServerCe.3.5。
根据堆栈跟踪要调用的最新函数是 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize(...)。
编辑 2
我已经添加了部署工作所需的所有文件。正如我在上面所写的,如果我通过一个带有 app.config 文件的 .net 可执行文件使用程序 dll(它使用 Linq 2 Sql),它指定在哪里查找 SQL CE 3.5 dll。部署不能只使用文件,需要一个 app.config 文件。
问题是我们必须通过 C++ 可执行文件来使用 dll 文件,它无法告诉 .net 在哪里寻找 Sql Ce 3.5 dll。