2010-05-11 15 views
13

Estoy usando Visual Studio 2010 y estoy usando implementación web para promocionar el sitio .Net MVC a entornos específicos. Instalé Elmah, y funcionó muy bien en mi entorno DEV, pero cuando pulsé TEST, obtuve excepciones porque SQLite no era un buen formato.SQLite no deseado insertado en bin

No estoy usando SQLite en Elmah o de otra manera que yo sepa. He eliminado todas las referencias visibles a SQLite, y he eliminado el .dll de todos los directorios de bin de configuración. Pero aún se inserta con cada compilación. Me doy cuenta de que el problema de excepción es que SQLite no se puede construir para CPU, y mis entornos varían de x86 a x64. Pero preferiría que SQLite ni siquiera estuviera presente.

He desinstalado Elmah, y SQLite todavía está insertado en el directorio \ bin. Ahora he vuelto a instalar Elmah y elimino manualmente SQLite.dll de \ bin después de cada compilación. ¿Cómo puedo determinar qué está causando que SQLite se inserte en mi \ bin después de cada compilación?

+0

no estoy claro en esto: ¿Se quitó SQLite desde el código fuente Elmah y volver a compilarlo? –

+0

Stefan, no eliminé ninguna referencia de la fuente de Elmah. Simplemente usé los binarios de Elmah. Parece que tendré que tocar su código prístino. Entraré en la fuente. – wilk

Respuesta

14

Si no está utilizando SQLite, entonces usted necesita para eliminar simplemente desde la fuente ubicación desde donde se importó la referencia. Para ampliarlo, supongamos que descargó y descomprimió ELMAH en la ruta C:\ELMAH en su disco local. Cuando agregó una referencia a ELMAH, probablemente apuntó a una de las versiones de plataforma bajo C:\ELMAH\bin, como C:\ELMAH\bin\net-2.0\Release. Desde los subdirectorios C:\ELMAH\bin, elimine todos los demás ensamblados y archivos no deseados excepto Elmah.dll, Elmah.pdb y Elmah.xml. Estrictamente hablando, ni siquiera necesita los dos últimos, pero de todos modos se los recomienda. Una vez hecho esto, puede agregar una referencia al Elmah.dll en su proyecto en Visual Studio y ninguna de las dependencias será arrastrada al directorio bin de su aplicación. Puede que tenga que eliminar su directorio bin y volver a generar su proyecto para deshacerse de una copia obsoleta de System.Data.SQLite.dll de una referencia anterior. ELMAH continuará funcionando bien sin System.Data.SQLite.dll, siempre y cuando no use Elmah.SQLiteErrorLog como su almacén de registro de errores.

Según otras sugerencias, no debería tener que eliminar las referencias a SQLite de las fuentes de ELMAH y hacer una compilación privada.

+1

Si bien la respuesta de Stefan logra mi objetivo con poco esfuerzo, la solución de Atif resuelve el problema sin tocar la fuente. Esto es realmente lo que estaba buscando.Además, ¿quién soy yo para discutir con Atif cuando se trata de Elmah? – wilk

+1

Si bien este enfoque funciona, resulta en VS2010 MSBUILD que advierte CA0060 si tiene activado el análisis de código para el proyecto que hace referencia a Elmah. No puedo encontrar ninguna forma de suprimir esta advertencia. Así que el lanzamiento es: tener ensamblajes innecesarios en las dependencias de mi proyecto, o vivir con advertencias de análisis de código. Tampoco me gusta ... – BrettRobi

+2

¿Alguna sugerencia para los usuarios de NuGet? Si tomo el paquete Elmah en NuGet arroja el dll SQLite en mi directorio bin en cada compilación. – BZink

0

Utilice un editor de texto con soporte "find-in-files" para buscar todos los archivos de su proyecto para "sqlite". Algo debe estar haciendo referencia a eso.

+0

Sam, gracias. Hice un hallazgo en el archivo, pero no se encontró ninguna referencia a SQLite. – wilk

2

Creo que Visual Studio detectará que SQLma es requerido por Elmah y lo copiará si lo encuentra. Para lograr el mismo objetivo, eliminé todo el material de SQLite del código fuente de Elmah y lo reconstruí. Es algo muy doloroso que ver ...

+1

Cha Ching! Simplemente elimine SQLiteErrorLog.cs del proyecto, compile y listo. Gracias por la ayuda. – wilk

0

Sé que es una vieja pregunta, pero tengo un problema similar y llegué aquí, así que tal vez mi respuesta aún sirva para otros.

Basta con añadir esto a su archivo de proyecto de la aplicación web en un PropertyGroup-elemento preferido:

<ExcludeFilesFromDeployment>bin\System.Data.SQLite.dll</ExcludeFilesFromDeployment> 
Cuestiones relacionadas