Reputation: 7446
I'm working on a system to use a SqlServerCe
with NHibernate
. From my driver program, if I add the System.Data.SqlServerCe
assembly as a reference, I can create and run queries against a database just fine. When trying to use NHibernate
, though, I get the following exception:
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll Additional information: Could not load file or assembly 'System.Data.SqlServerCe' or one of its dependencies. The system cannot find the file specified.
I've traced the exception to a call to Assembly.Load("System.Data.SqlServerCe")
, which seems like it should work. The System.Data.SqlServerCe
assembly is in the GAC (I've also tried to add it as a local reference with CopyLocal=true
, to no avail), and I can use its members fine, so why can't I explicitly load it? When I open the assembly in Reflector, it has trouble loading the System.Transactions
reference (I've also tried adding it as a local reference, again to no avail), so loading that assembly might be the problem, rather than the System.Data.SqlServerCe assembly
.
Is this a common problem? System misconfiguration, maybe?
Upvotes: 11
Views: 35712
Reputation: 37644
This is most probably connected to some system (mis)configuration.
However, by design SQL Server CE is just a single DLL, which may be shipped together with your product.
This means that you can just set Copy local
to True
in the reference properties of System.Data.SqlServerCe
, and you are done.
Upvotes: 2
Reputation: 18747
I had a similar problem. The mistake I was doing was I was trying to execute the .exe present in the ../obj/x86/Release, whereas I am supposed to execute the .exe present in ../bin/Release. (I am absolute newbie to C#).
(I also noticed that in this ../bin/Release directory , the referenced .dll file is copied locally.)
Upvotes: 1
Reputation: 7446
Apparently this can be solved by adding a <qualifyAssembly> element to the app.config file. Adding the following has my app running smoothly:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="System.Data.SqlServerCe" fullName="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</assemblyBinding>
</runtime>
Thanks!
Upvotes: 8