2012-02-16 9 views
7

Estoy intentando crear un conjunto de bibliotecas de clases para compartir el código entre las aplicaciones que vamos a crear.Bibliotecas de clases para proyectos MonoTouch, obteniendo "no construido con la configuración activa", ¿cómo solucionarlo?

Sin embargo, no puedo crear los proyectos correctamente y no puedo ver lo que estoy haciendo mal.

Déjame ir a través de los pasos que utilizo para reproducir este, tal vez alguien aquí puede ver lo que estoy haciendo mal:

  1. En una instancia de MonoDevelop fresca, voy a Archivo-> Nueva Solución
  2. tomo la plantilla proyecto biblioteca MonoTouch, y darle un nombre apropiado
  3. luego añadir un nuevo proyecto de aplicación de la solución (para simular el uso de la biblioteca en una aplicación), del tipo "iPhone individual con vistas aplicación"
  4. Hago que la aplicación proyecte el proyecto de inicio
  5. agrego una referencia al proyecto de biblioteca en el proyecto de aplicación
  6. que luego construir

Esto funciona, y si cojo la> opción de menú Run-depuración, puedo ver la apertura de aplicaciones en el simulador

Supongamos que quiero probarla en el iPhone ahora, para que visite el menú desplegable de la barra de herramientas, elija "depuración | iPhone" construir objetivo, e inmediatamente el proyecto de biblioteca de clases está en gris con:

(no incorporado en la configuración activa)

Si right-click la solución, comprobar las asignaciones de configuración, al momento de retirar todo lo relacionado con el simulador o el iPhone, la biblioteca de clases desaparece de la vista por completo y es incapaz de seleccionar para construir

El menú desplegable del objetivo de compilación también tiene 6 elementos ahora, Depurar, Liberar, Depurar/liberar para iPhone y Depurar/liberar para el simulador. Aparentemente, solo la depuración y la versión que no es para iPhone o el simulador termina construyendo la biblioteca de clases.

¿Qué estoy haciendo mal aquí?

En un proyecto diferente donde no tenía el lujo de poder buscar una solución, terminé creando un proyecto universal vacío, ¿es esa la forma "correcta" de mitigar esto?

+3

Acabo de probar esto, y parece roto. Le sugiero que presente un error en http://bugzilla.xamarin.com para que el problema pueda ser rastreado correctamente. –

+2

Lo mismo aquí, ¿alguna noticia? Puedo solucionar creando siempre la configuración de la solución Debug y luego volviendo a la configuración de Debug | iPhone, pero es fácil de olvidar y luego me pregunto por qué los cambios no se implementan en el iPhone cuando se realiza un pequeño cambio en la biblioteca de clases entre compilaciones. El intercambio de configuraciones de soluciones entre compilación e implementaciones es tedioso y propenso a errores. –

+1

Una solución podría ser editar su archivo * .sln manualmente, ¿tiene otro archivo * .sln que funcione con el que comparar? – jonathanpeppers

Respuesta

2

Curiosamente, esto no ocurre si agrega el proyecto Lib después de el proyecto de la aplicación.

Creé el proyecto Lib tal como lo describió, luego agregué una aplicación de iPhone para una sola vista, luego agregué otra Lib (Lib2). a continuación, he comparado el texto en el .sln y encontró que faltaba Lib las siguientes líneas (en comparación con el de Lib2):

{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhone.ActiveCfg = Debug|Any CPU 
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhone.Build.0 = Debug|Any CPU 
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU 
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU 

{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhone.ActiveCfg = Release|Any CPU 
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhone.Build.0 = Release|Any CPU 
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU 
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU 

utilizar su propio GUID en lugar de la mía. El GUID estará cerca de la parte superior del archivo.Por ejemplo, la mía se parece a (desplazamiento hasta el final):

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lib", "Lib.csproj", "{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}" 

que luego volvió a abrir la solución y Lib ahora está disponible tanto en las configuraciones Debug|iPhone y Debug|iPhoneSimulator.


Como nota al margen, a pesar de que la Lib no construiría en Debug|iPhone o Debug|iPhoneSimulator, el binario de Debug era compatible. Podría construir y ejecutar la aplicación sin problemas.

+0

Descubrí que realmente sucede cuando ". Build.0 "falta parte, así que solo agréguela a cada una de las entradas. Realmente molesto porque causa muchos más problemas con el proyecto. –

Cuestiones relacionadas