.net mef project-reference

.net - ¿Por qué aparece un icono de advertencia cuando agrego una referencia a un proyecto de complemento MEF?



project-reference (13)

Deseo probar la clase principal de un complemento haciendo referencia directamente al proyecto del complemento y creando una instancia de la clase del complemento. Cuando creo un proyecto de aplicación de consola de prueba y agrego una referencia de proyecto al proyecto de complemento, aparece un icono de advertencia (triángulo amarillo con un signo de exclamación) junto a la referencia en la lista de referencias.

Cuando, en cambio, agrego una referencia a la dll, la salida de compilación del complemento, no recibo tal advertencia. ¿Qué podría estar tratando de decirme esta advertencia?


  1. Asegúrese de que todas las versiones sean iguales para cada proyecto, haga clic en cada proyecto y vea la versión aquí Proyecto> Propiedades> Aplicación> Marco .NET de Target
  2. a. Vaya a Herramientas> Nuget Package Manager> Tipo de consola del administrador de paquetes Update-Package -Reinstall (si no funciona, proceda a 2.b )

    segundo. Quitar <Target> Tal vez con varias líneas </ Target> que generalmente se encuentran en la parte inferior de .csproj.

  3. Guarda, carga y construye la solución.


Agregando mis 2 centavos a la respuesta @ kad81,

Vaya a Visual Studio -> BUILD -> Configuration Manager

En el menú desplegable "Active Solution Platform" en la esquina superior derecha (el mío es VS 2012), si se trata de "Mixed Platforms", cámbielo a la plataforma adecuada en función de los ensamblajes de terceros de referencia.

Luego, en cada uno de los proyectos de la lista, asegúrese de seleccionar la misma plataforma para todo el proyecto. (Si x86 no existe, seleccione "", entonces puede seleccionar "x86".)

Reconstruya primero los proyectos de la biblioteca y luego haga referencia a los proyectos. Espero que esto ayude.


Asegúrese de que tiene los proyectos dirigidos a la misma versión de marco . La mayoría de las veces la razón sería que el proyecto actual (donde está agregando la referencia de otro proyecto) apunta a una versión de .net framework diferente a las demás .


Como se mencionó en los comentarios de la pregunta, diferentes versiones de .NET Framework entre los proyectos pueden causar esto. Verifique las propiedades de su nuevo proyecto para asegurarse de que no se esté utilizando una versión predeterminada diferente.


Compruebe NETFramework de la dll referida y el Proyecto donde está agregando la DLL. Ej: DLL ==> supportedRuntime version = "v4.0" Project ==> supportedRuntime version = "v3.0"

Obtendrá el icono de advertencia. Solución: Hacer que la versión dll sea consistente.


En el núcleo de Asp.net, en algún momento se muestra alerta si cambia el espacio o el nombre del proyecto. Para eliminar este tipo de alertas, simplemente descargue el proyecto y vuelva a cargarlo. Si el problema persiste, significa que no puede encontrar la referencia de su Asamblea.


Ha pasado mucho tiempo desde que se hizo esta pregunta, pero si alguien sigue interesado, hace poco me encontré con iconos similares. Estaba compilando un proyecto de C # .net usando VS 2008. Encontré que VS no podía localizar los ensamblajes para esas referencias. Cuando hice doble clic en VS, actualicé las referencias y eliminé los íconos en algunos de esos [EDIT: que AHORA podría ubicar]. Para las referencias restantes, tuve que compilar los ensamblajes respectivos.


Para arreglar algunas cosas que no funcionan, tiene sentido eliminar algunas bibliotecas a veces, ¿cómo no suena raro?

De todos modos, creo que el problema es demasiado amplio y puede ser causado por diferentes factores , así que quiero compartir mi situación / solución.

Tuve un proyecto (traído por el cliente) con las bibliotecas Xamarin Forms y Telerik. La cosa en general estaba relacionada con los componentes, las bibliotecas no están incluidas en la carpeta de paquetes, ni están disponibles a través de Nuget (de pago).

Todo el proyecto Referencias fueron "amarillas", se veía horrible y aterrador.

La solución fue simplemente eliminar esas referencias de Telerik (incluidos algunos controles en el código que usaban eso). Justo después de eso, todas las referencias obtuvieron mágicamente su color gris normal común y los errores (en su mayoría) desaparecieron.

En su mayoría, los mensajes de error sobre "el elemento no está definido en ninguna parte" a veces ocurren. Eso es raro y trae inconvenientes, pero aún puedo compilar y ejecutar el (los) proyecto (s): solo necesito limpiar la solución, reiniciar Visual Studio, orar un poco, limpiar nuevamente, eliminar las carpetas obj / bin, reiniciar nuevamente, y funciona bien.

La clave es eliminar las referencias de bibliotecas no disponibles , ya que los mensajes de error dicen absolutamente otra cosa. (Por ejemplo, algo como "Xamarin.Build.Download.XamarinDownloadArchives no se encuentra o no puede encontrar algo", etc., pero eso podría significar que no tiene algunas referencias disponibles.

Luego elimine la carpeta de paquetes, vuelva a cargar / vuelva a abrir el proyecto / solución, vaya a "Administrar paquetes Nuget" y haga clic en el botón "Restaurar".


Para los dos (o todos) los proyectos que desea utilizar juntos:

Haga clic derecho en el proyecto> Propiedades> Aplicación> Marco .NET de destino

Asegúrese de que ambos (o todos) sus proyectos estén utilizando la misma versión de .NET framework.


Para mí, me encontré con este problema al hacer referencia a una biblioteca de clase 2.0 estándar de .NET en una aplicación de consola .NET Framework 4.7.1. Sí, los marcos son diferentes, pero son compatibles (se supone que .NET Standard debe funcionar tanto con .NET Core como con .NET Framework). Intenté limpiar, reconstruir, eliminar y leer la referencia del proyecto, etc. Sin éxito. . Finalmente, salir de Visual Studio y volver a abrir resolvió el problema.


Reinstale todos los paquetes en todos los proyectos de la solución actual:

Update-Package -Reinstall


Se encontró el mismo problema con una aplicación web ASP.Net y dos proyectos de clase de biblioteca que debían ser referenciados dentro de la aplicación web. No tenía información proporcionada sobre por qué falló la compilación y las referencias no eran válidas.

La solución fue asegurar que todos los proyectos tuvieran el mismo Marco de destino:

En Visual Studio 2015: proyecto de clic con el botón derecho> Propiedades> Aplicación> Marco de destino

Guardar, limpiar y reconstruir solución. Las referencias del proyecto ya no deberían aparecer como advertencias amarillas y la solución se compilará.

Mi aplicación web estaba orientada a .Net 4.5 mientras que los otros dos proyectos de clase de biblioteca dependientes apuntaban a .Net v4.5.2


Tuve estos iconos por una razón diferente. Tenemos una gran solución para todos nuestros proyectos (casi 100). Hice una subselección de los proyectos en los que estaba interesado e hice una nueva solución. Sin embargo, las referencias donde el proyecto hace referencia en lugar de referencias a los archivos DLL compilados ...

Después de algunas investigaciones, encontré este enlace en GitHub que explica que este es un nuevo comportamiento en VS2015.

En la página de GitHub, explican una solución alternativa para convertir referencias de proyectos a referencias binarias.