2010-08-07 46 views
13

Tengo dos proyectos A y B. El proyecto A utiliza el tipo X en el proyecto B, por lo que tengo una referencia a B agregado en A. Todo construido correctamente.C# tipo definido en un ensamblaje al que no se hace referencia

Firmé el proyecto B usando un archivo de claves con nombre seguro. Todo todavía construido bien.

Luego decidí cambiar el fuerte archivo de clave con nombre para B. Reconstruí el proyecto B ok. Cuando intento crear el proyecto AI, recibo el error "Error 1 El tipo X se define en un ensamblaje que no está referenciado. Debe agregar una referencia al ensamblado B, Versión = 1.0.0.0, Cultura = neutro, PublicKeyToken = 95b41b0d6571627b '. "

Así que eliminé la referencia en el proyecto A y la agregué de nuevo, sin alegría. Puedo hacer doble clic en la referencia del proyecto B en el proyecto A, abrir el navegador de objetos y ver el tipo X ahí, de acuerdo. También califiqué por completo los objetos de tipo X en A y el intellisense los recogió bien, pero aún no se construye.

Pensé que al cambiar el archivo de la clave podría necesitar subir la revisión, así que cambié la versión del ensamblaje B a 2.0.0.0 pero aún A se queja de que necesita la versión 1.0.0.0. En cuanto a las propiedades de la referencia B en A definitivamente apunta a la versión correcta y de hecho muestra como 2.0.0.0

Podría vivir con el uso del archivo de clave existente, pero me gustaría entender dónde estoy yendo mal si es posible.

+1

¿B está firmado con retraso? –

+0

Hola Merlyn, no B no tiene firma de retraso – CSharpHolder

+2

Intenta crear un nuevo proyecto y agrega una referencia al proyecto B. Eso al menos te dirá si hay algún problema con el Proyecto A o el Proyecto B. –

Respuesta

0

Puede intentar editar el proyecto A del proyecto (projectA.csproj). Para hacer esto a través del estudio visual, haga clic derecho en el proyecto-> descargar proyecto y luego en el proyecto descargado, haga clic derecho-> editar archivo. Búsqueda de la referencia de los proyectos B allí, y tratar de corregir cuando sea necesario

+0

Aunque he echado un vistazo allí, la referencia se veía bien. He pasado por la ruta de anular la firma de todo, hacer que todo vuelva a crecer y luego aplicar el nuevo archivo de claves. – CSharpHolder

4

Sobre la base de lo que ha dicho en los comentarios, yo diría que es definitivamente algo con el proyecto A.

Tal vez estas medidas ayudarán fijarlo:

  1. quitar la referencia al proyecto B y ahorrar
  2. crack abrir el archivo .csproj con la libreta o algo
  3. Busque cualquier referencia a Proyecto B de allí (tal vez un nodo hintpath) y retire el guiño mi.
  4. Si el proyecto A pasa a ser un proyecto ASP.NET, busque en su web.config o sus encabezados de página aspx para cualquier referencia al Proyecto B.

Una vez que retire todas las referencias al proyecto, recargar la proyecto como un cuello de botella sugerido y ver si eso lo arregla para usted.

1

Lo siento por la respuesta tardía, pero esto me ayudó:

(Asumiendo que usted tiene Cualquier CPU plataforma de soluciones actualmente)

  • interruptor de plataforma de soluciones a x86.
  • compilar
  • interruptor de nuevo
  • compilación de nuevo.
+0

¿Por qué downvoting? De esta manera me ayuda de vez en cuando. –

+1

¿Quizás porque la solución se siente como un error que realmente no soluciona el problema subyacente? –

+0

'Problema subyacente' probablemente se encuentre dentro del código fuente de VS, por lo que no podemos solucionarlo. –

0

si x inherites A debe refrence en B

0

Lo que funcionó para mí fue eliminar la referencia al proyecto, a continuación, agregarlo de nuevo. Apareció un nuevo mensaje de error que indicaba que necesitaba una referencia a una tercera biblioteca que faltaba, por lo que el mensaje original era un poco engañoso.

0

Para ayudar a las personas que llegan desde Google, Merlyn's comment preguntando por la demora en la firma fue la respuesta para mí.

Estaba obteniendo este error haciendo referencia a un ensamblado firmado por retraso A que hace referencia a un tipo X definido en el ensamblaje B. Recibí el error de que no se hizo referencia a B (y ya hacía referencia a la versión firmada de B).

La solución fue encontrar y consultar la versión firmada de A.

Cuestiones relacionadas