Condivisione del codice progetti condivisi

Progetti condivisi consente di scrivere codice comune a cui fa riferimento un numero di progetti di applicazione diversi. Il codice viene compilato come parte di ogni progetto di riferimento e può includere direttive del compilatore per incorporare funzionalità specifiche della piattaforma nella codebase condivisa.

I progetti condivisi (detti anche progetti di asset condivisi) consentono di scrivere codice condiviso tra più progetti di destinazione, incluse le applicazioni Xamarin.

Supportano le direttive del compilatore in modo che sia possibile includere in modo condizionale codice specifico della piattaforma da compilare in un subset dei progetti che fanno riferimento al progetto condiviso. È disponibile anche il supporto dell'IDE per gestire le direttive del compilatore e visualizzare l'aspetto del codice in ogni applicazione.

Se in passato è stato usato il collegamento di file per condividere il codice tra progetti, i progetti condivisi funzionano in modo simile, ma con un supporto IDE molto migliorato.

Che cos'è un progetto condiviso?

A differenza della maggior parte degli altri tipi di progetto, un progetto condiviso non ha alcun output (in formato DLL), ma il codice viene compilato in ogni progetto che vi fa riferimento. Questo è illustrato nel diagramma seguente: concettualmente l'intero contenuto del progetto condiviso viene "copiato" in ogni progetto di riferimento e compilato come se fosse parte di essi.

Shared Project architecture

Il codice in un progetto condiviso può contenere direttive del compilatore che abilitano o disabilitano sezioni di codice a seconda del progetto dell'applicazione che usa il codice, suggerito dalle caselle della piattaforma colorata nel diagramma.

Un progetto condiviso non viene compilato autonomamente, ma esiste esclusivamente come raggruppamento di file di codice sorgente che possono essere inclusi in altri progetti. Quando si fa riferimento a un altro progetto, il codice viene compilato in modo efficace come parte di tale progetto. I progetti condivisi non possono fare riferimento ad altri tipi di progetto (inclusi altri progetti condivisi).

Si noti che i progetti di applicazioni Android non possono fare riferimento ad altri progetti di applicazioni Android, ad esempio un progetto di unit test Android non può fare riferimento a un progetto di applicazione Android. Per altre informazioni sul progetto condiviso.

Procedura dettagliata per Visual Studio per Mac

Questa sezione illustra come creare e usare un progetto condiviso usando Visual Studio per Mac. Per un esempio completo, vedere la sezione Esempio di progetto condiviso.

Creazione di un progetto condiviso

Per creare un nuovo progetto condiviso, passare a Nuova soluzione file > ... (o fare clic con il pulsante destro del mouse su una soluzione esistente e scegliere Aggiungi > nuovo progetto...):

New Shared Project

Nella schermata successiva scegliere il nome del progetto e fare clic su Crea.

Di seguito è riportato un nuovo progetto condiviso. Si noti che non sono presenti nodi Riferimenti o Componenti; non sono supportati per i progetti condivisi.

Empty Shared Project

Affinché un progetto condiviso sia utile, è necessario fare riferimento ad almeno un progetto in grado di compilare (ad esempio un'applicazione o una libreria iOS o Android o un progetto PCL). Un progetto condiviso non viene compilato quando non contiene riferimenti, quindi gli errori di sintassi (o qualsiasi altro) non verranno evidenziati finché non viene fatto riferimento a un altro elemento.

L'aggiunta di un riferimento a un progetto condiviso viene eseguita nello stesso modo in cui si fa riferimento a un progetto libreria normale. Questo screenshot mostra un progetto Xamarin.iOS che fa riferimento a un progetto condiviso.

Project reference to Shared Project

Dopo aver fatto riferimento al progetto condiviso da un'altra libreria o applicazione, è possibile compilare la soluzione e visualizzare eventuali errori nel codice. Quando si fa riferimento al progetto condiviso da due o più progetti, viene visualizzato un menu in alto a sinistra dell'editor del codice sorgente che mostra i progetti che fanno riferimento a questo file.

Opzioni progetto condiviso

Quando si fa clic con il pulsante destro del mouse su un progetto condiviso e si sceglie Opzioni , meno impostazioni rispetto ad altri tipi di progetto. Poiché i progetti condivisi non vengono compilati autonomamente, non è possibile impostare opzioni di output o compilatore, configurazioni del progetto, firma di assembly o comandi personalizzati. Il codice in un progetto condiviso eredita in modo efficace questi valori da qualsiasi riferimento.

La schermata Opzioni è illustrata di seguito: il nome del progetto e lo spazio dei nomi predefinito sono le uniche due impostazioni che verranno in genere modificate.

Shared Project Options

Esempio di progetto condiviso

L'esempio Tasky usa un progetto condiviso per contenere il codice comune usato dalle applicazioni iOS, Android e Windows Telefono. Sia i file di SQLite.csTaskRepository.cs codice sorgente che utilizzano direttive del compilatore (ad esempio #if __ANDROID__) per produrre output diverso per ognuna delle applicazioni che vi fanno riferimento.

La struttura completa della soluzione è illustrata di seguito (rispettivamente in Visual Studio per Mac e Visual Studio):

Il progetto di Windows Telefono può essere spostato dall'interno di Visual Studio per Mac, anche se tale tipo di progetto non è supportato per la compilazione in Visual Studio per Mac.

Di seguito sono riportate le applicazioni in esecuzione:

iOS, Android, Windows Phone examples

Riepilogo

Questo documento descrive come funzionano i progetti condivisi, come possono essere creati e usati sia in Visual Studio per Mac che in Visual Studio e ha introdotto una semplice applicazione di esempio che illustra un progetto condiviso in azione.