Risoluzione dei problemi relativi all'installazione predefinita di Xamarin con Visual Studio 2017 e Windows 10 Creators Update

Risoluzione dei problemi relativi all'installazione predefinita di Xamarin con Visual Studio 2017 e Windows 10 Creators Update

Dato che ho recentemente iniziato a utilizzare Xamarin per lo sviluppo multipiattaforma, ho pensato che sarebbe stato bello condividere con la community come ho superato alcuni dei problemi che mi hanno fatto inciampare per un po' quando ho acquisito familiarità con esso. Questo non è davvero un normale tutorial "iniziare con Xamarin" - ce ne sono già molti là fuori, come questo - ma si spera che chiunque inizi con Xamarin lo trovi utile.

Prima di iniziare:cos'è Xamarin e perché dovrei usarlo?

Con gli strumenti Xamarin integrati in Visual Studio, gli sviluppatori possono creare applicazioni native in C# per dispositivi Windows, Mac e Linux. Quindi, invece di scrivere e gestire tre diverse basi di codice per tre piattaforme diverse, gli sviluppatori possono semplicemente scrivere il loro codice una volta e distribuirlo a diversi app-store.

Installazione degli strumenti Xamarin per Visual Studio 2017

Con Visual Studio 2017 è molto semplice aprire la procedura guidata di configurazione, selezionare gli strumenti Xamarin (come mostrato di seguito) e attendere l'installazione.

Probabilmente ci vorrà molto tempo per installare VS2017 con Xamarin:l'aggiunta di Xamarin all'installazione di base di Visual Studio lo rende più grande di circa 25 GB.

Creazione di un progetto con il modello Xamarin predefinito

Questo bit è semplice per chiunque abbia già creato un nuovo progetto in Visual Studio 2017.

Seleziona File -> Nuovo progetto per aprire la finestra di dialogo sottostante e scegliere un nome per il progetto:

Dopo aver fatto clic su OK nella finestra di dialogo sopra (che sceglie un tipo di progetto di app multipiattaforma), la finestra di dialogo si chiuderà e si aprirà un nuovo progetto. Ho scelto di utilizzare Xamarin.Forms (che consente agli sviluppatori di creare interfacce utente multipiattaforma). Ho anche scelto di creare un progetto condiviso perché mi aspetto solo che il mio codice venga utilizzato nella mia applicazione, piuttosto che condiviso con altri sviluppatori come libreria di classi portatile (puoi leggere ulteriori informazioni sulle differenze tra i progetti condivisi e le librerie di classi portatili qui).

Quando fai clic su OK, il progetto e i file verranno creati e verrà visualizzata una finestra come quella seguente con le istruzioni per la configurazione di Mac Agent. (Non ho un Mac e avrei comunque bisogno di Visual Studio Enterprise per usarlo, quindi normalmente faccio clic sulla casella "Non mostrare più" nell'angolo in basso a sinistra).

Alla fine ti verranno richieste le versioni di Windows a cui vuoi che l'aspetto UWP del tuo progetto abbia come target. Normalmente faccio semplicemente clic su OK qui.

A questo punto, avrai una semplice soluzione Xamarin in Visual Studio 2017, che contiene 4 progetti:uno per iOS, uno per Android, uno per UWP e un progetto condiviso.

E ora i gremlins ex machina

Dopo questo punto, ho incontrato alcuni ostacoli. Le cose che volevo fare che non hanno funzionato immediatamente per me erano:

  • Compila l'applicazione senza errori o avvisi
  • Esegui l'applicazione in un emulatore di Windows Phone
  • Esegui l'applicazione in un emulatore Android

Analizzerò alcuni dei sintomi dei problemi che ho riscontrato provando le cose sopra e come li ho risolti.

La compilazione della soluzione ha portato a più avvisi ed errori

Sfortunatamente il mio tentativo di compilare il progetto fuori dagli schemi ha mostrato un errore nel progetto UWP e una serie di messaggi di avviso per il progetto Android.

Come eliminare l'errore CS0103 –  'InitializeComponent' non esiste nel contesto corrente

L'errore segnala "Il nome 'InitializeComponent' non esiste nel contesto corrente ."

Alla fine ho notato un paio di cose che sembravano un po' bizzarre:

  • Anche se ho un errore, il messaggio nella barra di stato in basso a sinistra riporta "Ricostruisci tutto riuscito" - entrambi non possono essere sicuramente corretti?
  • Questo errore si riferisce al file App.xaml.cs che è aperto nel pannello dell'editor. Quando ho aperto Main.xaml.cs dal progetto condiviso nell'editor VS2017, ora vedo due errori (come mostrato nell'immagine sotto).

Quindi questi errori non sembrano influenzare negativamente la build e, se voglio davvero eliminarli, posso semplicemente chiudere quei file che eliminano gli errori (come mostrato di seguito).

Eliminazione degli avvisi sulle mancate corrispondenze di $(TargetFrameworkVersion)

Tre degli avvisi che ho visto erano molto simili:

The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.dll (v7.1) is 
greater than the $(TargetFrameworkVersion) for your project (v6.0). 
You need to increase the $(TargetFrameworkVersion) for your project.

The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.Android.dll (v7.1) 
is greater than the $(TargetFrameworkVersion) for your project (v6.0). 
You need to increase the $(TargetFrameworkVersion) for your project.

The $(TargetFrameworkVersion) for FormsViewGroup.dll (v7.1) is greater 
than the $(TargetFrameworkVersion) for your project (v6.0). 
You need to increase the $(TargetFrameworkVersion) for your project.

L'avviso dice che devo aumentare TargetFrameworkVersion per il mio progetto Android, ma quando guardo le proprietà di questo progetto, in realtà non posso aumentarlo oltre la versione 6 (MarshMallow).

Fortunatamente non siamo in un vicolo cieco qui:possiamo andare al menu Start e cercare "SDK Manager" per Android, che è installato con il componente Xamarin di Visual Studio 2017 (mostrato di seguito).

Quando avvio Android SDK Manager, analizza i pacchetti attualmente installati e consiglia cosa deve essere aggiornato. Sul mio sistema, è necessario installare o aggiornare 10 pacchetti, come mostrato di seguito.

Quando clicco sul pulsante "Installa 10 pacchetti...", viene visualizzata un'altra finestra che mi chiede di accettare la licenza. Ho accettato la licenza e ho cliccato su "Installa".

Viene avviata la procedura di installazione e aggiornamento, che può richiedere alcuni minuti.

Al termine dell'installazione, torniamo a Visual Studio 2017 - L'ho riavviato, quindi ho pulito e ricostruito la soluzione. Questa volta gli avvisi sulle mancate corrispondenze di $(TargetFrameworkVersion) sono spariti.

Eliminazione dell'avviso IDE0006 – "Si è verificato un errore durante il caricamento del progetto"

A volte ho riscontrato che avevo un avviso IDE0006 che consigliava "Errore riscontrato durante il caricamento del progetto. Alcune funzionalità del progetto, come l'analisi completa della soluzione per il progetto non riuscito e i progetti che dipendono da esso, sono state disabilitate “.

Questo di solito accadeva subito dopo aver creato un progetto e ho scoperto che se chiudo VS2017, lo riavvio e riapro e ricostruisco la soluzione, l'avviso scompare.

Quindi, per riassumere, per compilare il progetto di default senza errori o avvisi:

  • Esegui Android SDK Manager come amministratore e installa/aggiorna i pacchetti consigliati.
  • Riavvia Visual Studio 2017 e riapri il progetto.
  • Chiudi tutti i file del progetto condiviso che hanno il tipo *.xaml.cs.

Eseguire l'applicazione nell'emulatore di Windows Phone

L'ho trovato semplice non appena ho installato un emulatore di Windows Phone.

Ho cambiato il progetto di avvio nel progetto UWP e ho cambiato la destinazione di debug in modo che fosse uno degli emulatori di Windows Phone Mobile.

Dopo aver premuto play (o F5) per avviare l'esecuzione dell'applicazione UWP di Windows in un emulatore di Windows Phone, mi è stato chiesto di impostare la mia macchina in modalità sviluppatore per consentirmi di caricare le app:dovevo solo selezionare la terza opzione ("Modalità sviluppatore" ) come mostrato nell'immagine sottostante (puoi accedere a questa schermata da Start -> Impostazioni -> Per sviluppatori ).

Ma dopo aver modificato questa impostazione, tutto ha funzionato bene:nessun gremlin qui. L'emulatore di telefono si avvia dopo un paio di minuti e ho potuto facilmente vedere l'applicazione Xamarin nell'elenco delle app installate nell'emulatore di telefono.

E quando eseguo l'app Xamarin nell'emulatore, vedo il risultato corretto:un semplice modulo con un messaggio che dice "Benvenuto in Xamarin Forms!"

Eseguire l'applicazione nell'emulatore Android

Visual Studio 2017 viene fornito con diversi emulatori Android:puoi vederli se cambi il progetto di destinazione in quello Android e guarda l'elenco a discesa alla sua destra.

Utilizza l'emulatore Android x86, ma devi disattivare Hyper-V

Non è necessario disinstallare Hyper-V per eseguire l'emulatore Android x86 su Windows 10:è sufficiente disattivarlo. Il comando per farlo è molto semplice da un prompt dei comandi in esecuzione come amministratore:

bcdedit /set hypervisorlaunchtype off

Riavvia per rendere effettiva questa modifica alle impostazioni.

La mia esperienza è stata che non potevo avviare e distribuire correttamente il mio progetto su un emulatore Android da Visual Studio 2017. Tuttavia, sono stato in grado di avviare l'emulatore Android da Android AVD Manager, disponibile dal menu di avvio (come mostrato di seguito).

Quando avvii questo programma, vedrai una finestra di dialogo come quella qui sotto che elenca i dispositivi virtuali Android disponibili sulla tua macchina di sviluppo.

Seleziona uno degli emulatori x86 e fai clic sul pulsante "Avvia...". Accetta le opzioni predefinite nella schermata di avvio e verrà avviato un emulatore di telefono Android.

Ora torna a Visual Studio 2017. Seleziona l'emulatore che hai appena avviato nell'elenco a discesa a destra della freccia verde "Riproduci". Ora fai clic con il pulsante destro del mouse sul progetto Android e seleziona "Distribuisci soluzione".

Questo dovrebbe ora distribuire l'applicazione Xamarin nell'emulatore Android, come mostrato di seguito (la nostra app si trova nella riga superiore, seconda colonna):

E quando facciamo clic sull'icona dell'applicazione Xamarin nell'emulatore, come previsto vediamo la stessa schermata dell'emulatore di Windows Phone che dice "Benvenuto in Xamarin Forms!"

Conclusione

Questo è stato solo un post rapido per aiutare altri sviluppatori Xamarin che stanno iniziando a evitare alcuni dei mal di testa che ho avuto. E solo per essere molto chiari, non sto criticando Xamarin o Visual Studio:far funzionare il codice su 3 piattaforme diverse che cambiano e si aggiornano costantemente è piuttosto miracoloso e, alla fine, le cose che dovevo fare non erano un grosso problema cambiare.

Esistono già alcune guide per la risoluzione dei problemi di Microsoft su Xamarin come questa. I suggerimenti di seguito sono argomenti che non ho trovato coperti da nessun'altra parte.

  • A volte gli errori (ad esempio CS0103) vengono segnalati in modo errato da VS2017 per i file aperti nell'editor, in particolare i file *.xaml.cs dal progetto condiviso:prova a chiudere questi file e ricostruire per vedere se gli errori scompaiono via.
  • Altri avvisi vengono visualizzati dopo la prima creazione del progetto (ad esempio, IDE0006), ma se si riavvia VS2017 e si ricostruisce il progetto, l'avviso scompare.
  • L'apertura di Android SDK Manager come amministratore e l'aggiornamento delle librerie che hai sul tuo computer di sviluppo possono aiutare a rimuovere gli avvisi relativi alle mancate corrispondenze di TargetFrameworkVersion:ricordati di riavviare VS2017 dopo l'aggiornamento, quindi pulire e ricostruire la tua soluzione tramite VS2017.
  • Non utilizzare gli emulatori ARM Android su Windows 10, avvia invece un emulatore x86 dal gestore AVD Android e distribuiscilo da VS2017 all'emulatore in esecuzione.
  • Se l'emulatore x86 non si avvia, potrebbe essere necessario disabilitare Hyper-V utilizzando il comando "bcdedit /set hypervisorlaunchtype off “.

Su di me: Posto regolarmente su .NET:se sei interessato, seguimi su Twitter o dai un'occhiata ai miei post precedenti qui. Grazie!


No