2012-02-16 10 views
7

Sto cercando di creare un set di librerie di classi per condividere il codice tra le applicazioni che stiamo per realizzare.Librerie di classi per progetti MonoTouch, ottenendo "non costruito utilizzando la configurazione attiva", come risolvere?

Tuttavia, non riesco a creare correttamente i progetti e non riesco a vedere cosa sto facendo male.

lasciarmi andare attraverso i passi che uso a riprodurre questo, forse qualcuno qui può vedere quello che sto facendo male:

  1. In un'istanza MonoDevelop fresca, vado a File-> Nuova soluzione
  2. prendo il modello di MonoTouch library project, e dare un nome appropriato
  3. ho quindi aggiungere un nuovo progetto di applicazione alla soluzione (per simulare utilizzando la libreria in un'app), di tipo "iPhone Visualizzazione singola applicazione"
  4. Faccio in modo che l'applicazione proietti il ​​progetto di avvio
  5. ho aggiungere un riferimento al progetto biblioteca nel progetto di applicazione
  6. Ho poi costruisco

Questo funziona, e se prendo l'Esegui-> voce di menu Debug, posso vedere l'apertura dell'applicazione in il simulatore.

Supponiamo che voglio testarlo su iPhone, in modo che visito la discesa nella barra degli strumenti, scegliere "Debug | iPhone" costruire bersaglio, e subito il progetto libreria di classi è in grigio con:

(non incorporato nella configurazione attiva)

Se ho destro del mouse la soluzione, controllare le mappature di configurazione, al momento del ritiro tutto ciò che riguarda il simulatore o l'iPhone, la libreria di classi scompare dalla vista del tutto e non è in grado di selezionare per la costruzione.

Il menu a discesa del target build include ora 6 elementi, Debug, Release, Debug/release per iPhone e Debug/release per il simulatore. Apparentemente solo il Debug e Release che non è né per l'iPhone né per il simulatore finisce per costruire la libreria di classi.

Cosa sto facendo di sbagliato qui?

In un progetto diverso in cui non avevo il lusso di essere in grado di cercare una soluzione, ho finito per creare un progetto universale vuoto, è il modo "corretto" per mitigarlo?

+3

Ho appena provato questo, e sembra rotto. Ti suggerisco di segnalare un errore su http://bugzilla.xamarin.com in modo che il problema possa essere correttamente monitorato. –

+2

Stessa cosa qui, qualche novità? Posso aggirare i problemi costruendo sempre la configurazione della soluzione Debug e poi cambiando di nuovo la configurazione di Debug | IPhone, ma è facile dimenticarlo e quindi chiedermi perché le modifiche non vengano distribuite su iPhone quando si effettua una piccola modifica nella libreria di classi tra le build. Lo scambio di configurazioni di soluzioni tra la compilazione e le implementazioni è noioso e soggetto a errori. –

+1

Una soluzione alternativa potrebbe essere quella di modificare manualmente il file * .sln, hai un altro file * .sln che puoi confrontare? – jonathanpeppers

risposta

2

È interessante notare che ciò non accade se si aggiunge il progetto Lib dopo il del progetto App.

Ho creato il progetto Lib come descritto, quindi ho aggiunto un'app per iPhone a vista singola, quindi ho aggiunto un altro Lib (Lib2). Ho poi confrontato il testo nella .sln e ha scoperto che mancava Lib le seguenti righe (rispetto al 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 

utilizzare il proprio GUID invece di mio. Il GUID sarà vicino all'inizio del file.Per esempio, il mio assomiglia (scorrere fino alla fine):

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

Poi ho riaperto la soluzione e lib è ora disponibile in entrambe le configurazioni Debug|iPhone e Debug|iPhoneSimulator.


Come nota a margine, anche se il Lib non avrebbe costruito in Debug|iPhone o Debug|iPhoneSimulator, il binario da Debug era compatibile. Potrei costruire ed eseguire l'app bene.

+0

Ho scoperto che in realtà accade quando ". Build.0 "manca, quindi aggiungilo a ciascuna voce. Davvero fastidioso perché causa molti più problemi con il progetto. –

Problemi correlati