2010-04-13 21 views
9

Tengo un problema con log4net que me ha estado molestando por un tiempo y he resuelto ordenarlo.problema de dependencia de log4net

Tengo una biblioteca de clase que hace referencia a log4net. Si hacen referencia a esta biblioteca de clases en otro proyecto Debo después hacer referencia a log4net en este proyecto de lo contrario me sale un error de generación

Unknown build error, 'Cannot resolve dependency to assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.' 

Soy consciente de que el mensaje de error, probablemente me está diciendo la solución, por desgracia, no lo hago habla galimatías ...

Saludos muchachos

Alex ..

Respuesta

7

Aquí está el enlace que describe lo que ocurre y cómo solucionarlo:

http://blogs.msdn.com/jmstall/archive/2006/11/22/reflection-type-load-exception.aspx

Un extracto del foro:

Así que lo que sucedió fue que se trató de obtener la System.Type para la barra, pero a resolver el tipo que necesita para cargar la base clase, que está en otro dll. El contexto de solo reflexión no hace política de enlace por lo que no puede encontrar que dll. La sugerencia LoaderException dice use ReflectionOnlyAssemblyResolve, que proporciona más información acerca de esto.

Para utilizar la API de reflexión, debe resolver todas las dependencias utilizadas.

+0

No, porque este error ocurre una vez que agrego mi biblioteca de clase a un proyecto en blanco, incluso antes de hacer cualquier llamada a la biblioteca de la clase. –

+0

@Alex DeLarge He vinculado a un artículo msdn que explica lo que está sucediendo. – kemiller2002

+1

Gracias por eso, Kevin, voy a aceptar esta respuesta, pero estaba buscando más información sobre cómo resolver esto específicamente con log4net. –

1

Tuve el mismo problema. Todavía no lo entiendo del todo, pero puedo decirte cómo resolví mi problema. Tenía un proyecto de prueba de unidad B con una referencia de proyecto al proyecto A, que hace referencia a log4net. Entonces, para mí, el galimatías significa que cuando Visual Studio intenta crear el archivo .accessor para el proyecto de prueba unitaria, se refleja en el proyecto A. Esto significa que intenta cargar las referencias del proyecto A, pero el cargador de ensamblaje no puede encontrarlo porque no tiene log4net en el GAC, solo localmente para el proyecto A para referencia. En mi caso, agregar log4net a mi DEVPATH (GAC también funcionaría) era la solución.

4

Tuve el mismo problema con log4net al crear un nuevo proyecto WPF y agregar una referencia a otro proyecto que hacía referencia a log4net. Resolví el problema agregando el log4net.dll al GAC usando estas instrucciones: http://msdn.microsoft.com/en-us/library/dkkx7f79.aspx

+1

Sí, eso funcionará, pero desafortunadamente agregar conjuntos al GAC no siempre será posible. –

+0

Tuve exactamente el mismo problema con log4net y un proyecto de WPF. Se hizo referencia a Log4Net en un proyecto separado, una biblioteca de clases, que luego quise hacer referencia en mi proyecto de WPF. Utilicé la consola de Package Manager para instalar log4net en el proyecto de WPF también (Install-Package log4net -project My.Wpf.Project) y eso resolvió el problema. –