Estoy desarrollando una aplicación Windows Forms usando Visual Studio 2008 C# que usa una base de datos SQL Server Compact 3.5 en el cliente. El cliente probablemente sea 32 bit Windows XP o Windows máquinas Vista. Estoy usando un proyecto estándar de Windows Installer que crea un archivo MSI y setup.exe para instalar la aplicación en una máquina cliente. Soy nuevo en SQL Server Compact, así que no he tenido que distribuir una base de datos de clientes como esta antes de ahora. Cuando ejecuto el setup.exe (en el nuevo 32 bits Windows XP con SP2 e Internet Explorador 7) se instala bien, pero cuando corro la aplicación consigo este error:Error SQL Server Compact: no se puede cargar DLL 'sqlceme35.dll'. El módulo especificado no se pudo encontrar
Unable to load DLL 'sqlceme35.dll'. The specified module could not be found
pasé un par de horas buscando este error ya, pero todo lo que pude encontrar fueron problemas relacionados con la instalación en Windows de 64 bits y ninguno relacionado con los 32 bits normales que estoy usando.
La aplicación de instalación copia todos los archivos dependientes que encontró en el directorio de instalación especificado, incluido el archivo System.Data.SqlServerCe.dll
(versión de ensamblaje 3.5.1.0). El archivo de base de datos está en un directorio llamado 'datos' fuera el directorio de la aplicación, y la cadena de conexión para ello es
<add name="Tickets.ieOutlet.Properties.Settings.TicketsLocalConnectionString" connectionString="Data Source=|DataDirectory|\data\TicketsLocal.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />
Algunas de las preguntas que tengo:
- En caso de que la aplicación será capaz de encontrar el archivo DLL archivo si está en el mismo directorio, es decir, local para la aplicación, o ¿necesito instalarlo en el GAC? (De ser así, ¿puedo usar Windows Installer para instalar un archivo DLL en el GAC?)
- ¿Hay algo más que necesite distribuir con la aplicación para utilizar una base de datos SQL Server Compact?
- También hay otros archivos DLL, como MS interoperabilidad para exportar datos a Excel en el cliente. ¿Es necesario instalarlos en el GAC o bastará con ubicarlos en el directorio de la aplicación?
Hola gracias por eso. Después de las primeras respuestas, pasé un par de días mirando ClickOnce, pero ahora vuelvo a una solución MSI, ya que ClickOnce no funciona muy bien cuando se distribuye una base de datos compacta con una aplicación. No resolví el problema original que tenía, pero intentaré incluir los .dll. Tuve el sqlceme35.dll en el directorio de la aplicación la primera vez, pero todavía recibí el error, por lo que no estoy seguro si el error seguirá allí. –
Sí, espero que funcione. Tenemos una aplicación de cliente inteligente a nivel empresarial implementada mediante clic una vez y con una base de datos compacta sql compact con miles de usuarios finales, y hasta ahora esta solución parecía funcionar mejor para nosotros en cuanto a la implementación sencilla y las actualizaciones automáticas de la aplicación. –
En realidad, sonó una campana (o debería decir que hizo clic una vez que dijiste eso ... ohhh), no me di cuenta de que se estaba desplegando a través del clic una vez.También verifique en su clic las configuraciones del proyecto una vez que haga clic en la pestaña de publicación/Archivos de la aplicación y luego incluya las dll de sql que se desplegarán correctamente, es posible que deba verificar mostrar todo para verlas. –