Note sulla versione RTM degli Strumenti di sviluppo per Windows Phone

09/16/2010

Di seguito sono riportate le note sulla versione RTM degli Strumenti di sviluppo per Windows Phone.

Requisiti di sistema

Installazione

Disinstallazione

Modifiche importanti

Problemi noti

Requisiti di sistema

Sistemi operativi supportati

Hardware

Piattaforme non supportate

Installazione

  1. Se è stata installata una versione precedente degli Strumenti di sviluppo per Windows Phone, è necessario disinstallarla prima di installare la nuova versione.
  2. Se è installata la stessa versione di lingua di Visual Studio 2010 (Professional o superiore), è possibile utilizzare Visual Studio 2010 per lo sviluppo dopo aver installato gli Strumenti di sviluppo per Windows Phone.
  3. È possibile installare gli Strumenti di sviluppo per Windows Phone anche se Visual Studio® non è ancora stato installato.
  4. Fare clic sul collegamento degli Strumenti di sviluppo per Windows Phone e seguire le istruzioni.

Disinstallazione

Modifiche importanti degli Strumenti di sviluppo per Windows Phone da Beta a RTM

 
 Elemento  Descrizione
Aggiornamento delle applicazioni create con le versioni precedenti degli Strumenti di sviluppo per Windows Phone Sono state effettuate le modifiche nel file WMAppManifest.xml e nei file modello. Ora che la convalida del manifesto è stata attivata, potrebbe essere necessario aggiornare questi file dei progetti precedenti. L'elenco delle modifiche è riportato di seguito. Tuttavia, è possibile confrontare i file WmAppManifest.xml, app.xaml e app.xaml.cs di un nuovo progetto con gli stessi file dei progetti precedenti per determinare ciò che è stato modificato e aggiornare i file precedenti.

Nell'elenco seguente vengono illustrate le modifiche da apportare al file WmAppManifest.xml:

  • Nell'elemento <App> modificare il valore dell'attributo Genre da NormalApp a apps.normal.
  • Nell'elemento <App> modificare il valore dell'attributo RuntimeType da SilverLight a Silverlight.
  • Rimuovere l'attributo PlaceHolderString dall'elemento <DefaultTask>.
  • Aggiungere l'attributo NavigationPage all'elemento <defaulttask> e impostarlo sulla pagina principale dell'applicazione. Ad esempio: <DefaultTask … NavigationPage=”MainPage.xaml”/>.

Nell'elenco seguente vengono illustrate le modifiche da apportare al file App.xaml:

Nota: si consiglia di eseguire una copia della versione più recente per aggiornare questo file. Utilizzando il file precedente, copiare le informazioni specifiche dell'applicazione (ad esempio, le risorse) in un nuovo file.

  • Rimuovere l'elemento <Application.RootVisual>
  • Aggiungere l'elemento <Application.ApplicationLifetimeObjects> . Ad esempio:

    <Application.ApplicationLifetimeObjects>
          <!--Required object that handles lifetime events for the application-->
          <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing"
               Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>
     

Nell'elenco seguente vengono illustrate le modifiche da apportare al file app.xaml.cs:

  • Se è stato aggiunto l'elemento <Application.ApplicationLifetimeObjects> al file App.xaml, sarà quindi necessario aggiungere questi gestori eventi al file app.xaml.cs:

    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
    }

    private void Application_Activated(object sender, ActivatedEventArgs e)
    {
    }

    private void Application_Deactivated(object sender, DeactivatedEventArgs e)
    {
    }

    private void Application_Closing(object sender, ClosingEventArgs e)
    {
    }
  • Aggiungere il codice di inizializzazione seguente al file app.xaml.cs e chiamare InitializePhoneApplication() nel costruttore dell'applicazione:

    // Easy access to the root frame
    public PhoneApplicationFrame RootFrame { get; private set; }

    // Avoid double-initialization-
    private bool phoneApplicationInitialized = false;

    // Do not add any additional code to this method
    private void InitializePhoneApplication()
    {
    if (phoneApplicationInitialized)
    return;

    // Create the frame but do not set it as RootVisual yet; this allows the splash
    // screen to remain active until the application is ready to render.
    RootFrame = new PhoneApplicationFrame();
    RootFrame.Navigated += CompleteInitializePhoneApplication;

    // Handle navigation failures
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Ensure you do not initialize again
    phoneApplicationInitialized = true;
    }

    // Do not add any additional code to this method
    private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
    {
    // Set the root visual to allow the application to render
    if (RootVisual != RootFrame)
    RootVisual = RootFrame;

    // Remove this handler since it is no longer needed
    RootFrame.Navigated -= CompleteInitializePhoneApplication;
    }

    // Code to execute if a navigation fails
    void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
    {
    if (System.Diagnostics.Debugger.IsAttached)
    {
    // A navigation has failed; break into the debugger
    System.Diagnostics.Debugger.Break();
    }
    }

    #endregion

 

Limite al sideload di applicazioni nel telefono La registrazione del telefono dello sviluppatore è il processo mediante il quale uno sviluppatore registrato Windows Phone® consente di sbloccare un Windows Phone commerciale per il sideload di applicazioni per sviluppo e test. Viene imposto il limite massimo di applicazioni di sideload che possono essere installate contemporaneamente nel telefono. Il limite massimo predefinito è 10 applicazioni. Si verificherà un errore nel caso in cui si tenti il sideload di più di 10 applicazioni. Questo limite non influisce sulle applicazioni installate mediante il Marketplace di Windows Phone®.

 

Riferimenti di assembly di XNA Framework Il token di chiave pubblica per gli assembly di XNA Framework è stato modificato. I riferimenti di assembly dei progetti di contenuto e dei progetti di giochi creati utilizzando le versioni precedenti degli Strumenti di sviluppo per Windows Phone devono essere aggiornati per funzionare correttamente. A tale scopo, rimuovere e aggiungere di nuovo i riferimenti che non si risolvono correttamente utilizzando il nodo Riferimenti in Esplora Soluzioni di Visual Studio.

 

Codifica dei caratteri. Il supporto per tutte le codifiche dei caratteri verrà rimosso, ad eccezione di quelle contenute nell'elenco seguente.
  • utf-8
  • utf-16
  • utf-16LE
  • utf-16BE
  • ISO-8859-1

L'uso di un valore di codifica non supportato da un'applicazione determinerà un'eccezione di tipo ArgumentException . È necessario modificare le applicazioni esistenti per rimuovere i riferimenti ai valori di codifica non supportati. I dati XML devono specificare solo le codifiche supportate. Ad esempio:
<?xml version="1.0" encoding= “utf-8”?>.

 

Viene restituito GamerPrivilegeException se l'utente non dispone dei privilegi di contenuto. Se i flag AllowProfileViewing e AllowUserCreatedContent non sono impostati nel profilo del giocatore, l'utente non può visualizzare i profili o la scheda del giocatore di un altro utente. I metodi seguenti verificano questi privilegi e verrà restituito GamerPrivilegeException se l'utente non dispone di questi privilegi:
  • Guide.ShowGamerCard(PlayerIndex player, Gamer gamer)
  • Gamer.BeginGetFromGamertag(string gamertag, AsyncCallback callback, object asyncState)
  • Gamer.GetFromGamertag(string gamertag)
  • Gamer.GetProfile()
  • Gamer.BeginGetProfile(AsyncCallback callback, object asyncState
Il meccanismo di condivisione delle immagini è stato modificato. In precedenza, Windows Phone® 7 posizionava l'immagine nello spazio di memorizzazione isolato dell'applicazione. L'immagine veniva quindi caricata all'avvio dell'applicazione. Ora, quando l'applicazione viene avviata, viene passato un token di una stringa. Per recuperare l'immagine, l'applicazione chiama il metodo GetPictureFromToken() public static Picture GetPictureFromToken(string token), che accetta il token come parametro e restituisce un oggetto Immagine. È necessario aggiornare le applicazioni esistenti.

Nell'esempio di codice seguente viene illustrato l'utilizzo del metodo GetPictureFromToken per recuperare un'immagine. Per ulteriori informazioni vedere, Procedura: Creare un'applicazione extra per immagini per Windows Phone:

using System.Windows.Media.Imaging;
using Microsoft.Phone;
using System.IO;
using Microsoft.Xna.Framework.Media;
using System.Windows.Navigation;
.
.
.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
//Gets a dictionary of query string keys and values
IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;


//This code ensures that there is at least one key in the query string, and checks if the "token" key is present.
if (queryStrings.ContainsKey("token"))
{

//This code retrieves the picture from the local Zune Media Database using the token passed to the application.
MediaLibrary library = new MediaLibrary();
Picture picture = library.GetPictureFromToken(queryStrings["token"]);


//Creates WriteableBitmap object and adds to the Image control Source property.
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(picture.GetImage());
WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap);
retrievePic.Source = picLibraryImage;
}

}

Distribuzione e debug. Durante la distribuzione o il debug, se viene visualizzato il seguente messaggio di errore: "Impossibile avviare l'applicazione per il debug". Verificare innanzitutto che l'applicazione sia installata nel dispositivo di destinazione e che non venga visualizzata la schermata iniziale nel progetto. Disinstallare quindi l'applicazione e attenersi alla seguente procedura relativa a Visual Studio:
  1. Aggiungere al progetto un file immagine con il nome SplashScreenImage.jpg.
  2. In Esplora Soluzioni, fare clic con il pulsante destro del mouse sul file e selezionare Proprietà.
  3. Nel riquadro Proprietà, impostare Operazione di compilazione su Contenuto.
  4. Ricompilare e ridistribuire l'applicazione.
Installazione in Windows Vista. Il programma di installazione di Strumenti di sviluppo per Windows Phone non consente l'installazione in Windows Vista e obbliga l'utente a installare Windows Vista SP2.

Problemi noti

Installazione

Disinstallazione

Expression Blend 4

Sviluppo di applicazioni Silverlight

Visual Studio 2010 Express per Windows Phone

Emulatore di Windows Phone

Sviluppo di XNA Game

Distribuzione e debug di Windows Phone in XNA Game Studio

Installazione

  1. La versione RTM degli Strumenti di sviluppo per Windows Phone (Windows Phone Developer Tools, WPDT) è compatibile esclusivamente con la versione RTM di Visual Studio® 2010. Se si dispone di una versione della famiglia di prodotti Visual Studio 2010 diversa dalla versione RTM di Visual Studio 2010 installata nel computer, l'installazione verrà interrotta per eseguire la disinstallazione del prodotto o di una serie di componenti.
  2. Per ulteriori problemi noti relativi all'installazione e alla disinstallazione correlati a Visual Studio 2010, vedere questo file Leggimi.
  3. Se l'installazione dei componenti XNA Game Studio o Expression Blend non viene completata in quanto parte dell'installazione di WPDT, è possibile installarli da Installazione applicazioni:
    1. Fare clic con il pulsante destro del mouse su Strumenti di sviluppo per Windows Phone Microsoft – ITA e selezionare Disinstalla/Cambia.
    2. Selezionare Aggiungi componenti opzionali e procedere con l'installazione.
  4. I progetti Windows Phone sono disponibili in LightSwitch e altri Shell SKU di Visual Studio integrati. Tuttavia, lo sviluppo dell'applicazione Windows Phone non è supportata da questi SKU.
  5. Ripristino WPDT non ripristina Expression Blend. Per ripristinare Expression Blend, eseguire i passaggi dell'elemento 3 precedente.
  6. In un computer può essere installata solo una versione localizzata di WPDT.
  7. È possibile installare una versione localizzata di WPDT in un computer con un sistema operativo localizzato corrispondente.
  8. L'installazione di una versione in lingua di WPDT in un sistema con una versione in lingua differente di Expression Blend non è supportata.
  9. Quando si esegue l'aggiornamento da una versione ENU di WPDT a una versione localizzata, è necessario disinstallare WPDT ENU e Expression Blend. Accertarsi di disinstallare qualsiasi componente rimasto di Expression Blend prima di procedere con l'installazione della versione localizzata di WPDT.

Disinstallazione

Expression Blend 4

  1. I progetti Silverlight, WPF (Windows Presentation Foundation) e SketchFlow non son disponibili in Expression Blend 4 per Windows Phone. Per compilare progetti Silverlight, WPF o SketchFlow, scaricare la versione di prova di Expression Studio 4 Ultimate.

Sviluppo dell'applicazione Silverlight

  1. HttpWebRequest (e WebClient) UserAgent impostato come NULL o stringa vuota verrà inviato come NativeHost. Sebbene la proprietà UserAgent di HttpWebRequest sia impostata su NULL o una stringa vuota(""), quando la richiesta viene inviata, a tale proprietà sarà associato il valore NativeHost.
  2. Quando si utilizza Microsoft.Devices.MediaHistoryItem.PlayerContext per aggiungere coppie chiave-valore, utilizzare valori di dimensioni inferiori. Ciò ha un impatto sulle API MediaHistory.WriteRecentPlay() e MediaHistory.WriteAcquiredItem() e non consentirà l'aggiornamento dell'hub Musica e video se le dimensioni delle coppie chiave-valore sono troppo grandi. Limitare la lunghezza combinata di tutte le coppie chiave-valore a un massimo di 200 caratteri.
  3. La radio FM non si spegne automaticamente quando l'applicazione viene eseguita in background. Consumerà batteria anche quando non viene utilizzata. L'applicazione spegne la radio (ad esempio MyFMRadio.PowerMode = RadioPowerMode.Off) quando non viene più utilizzata.
  4. Il dispositivo di scorrimento non gestisce i margini all'interno del modello di controllo. Tale dispositivo funziona solo per valori ridotti (ad esempio, 0-5). Se si tenta di utilizzarlo per valori più grandi, potrebbe non essere possibile trascinare il dispositivo di scorrimento completamente a destra. Inoltre, il dispositivo di scorrimento può arrestarsi in modo anomalo con determinati layout (ad esempio, se viene impostato su "Stretch" all'interno di ScrollViewer con una barra di scorrimento orizzontale).
    Per risolvere questi problemi, aggiornare il modello e rimuovere i margini interni. Tenere presente che effettuando tale operazione, verrà persa l'area di tocco aggiuntiva.
  5. Quando un'istanza disattivata di un'applicazione viene riattivata, non è possibile avviare la navigazione fino a quando non è completata la navigazione della pagina principale dell'applicazione riattivata dalla pagina esterna. L'errore più comune finora è stato il tentativo da parte delle applicazioni di chiamare Navigate o GoBack quando viene ricevuto l'evento Completed di un selettore. Sfortunatamente, questo si può verificare prima che venga completata la navigazione della pagina principale. La soluzione alternativa è aspettare l'evento NavigationService.Navigated o l'overrideOnNavigatedTo della pagina principale prima di chiamare Navigate o GoBack.
  6. Il rendering dell'ordine z di MediaElement non funziona correttamente nell'emulatore di Windows Phone. L'elemento multimediale viene visualizzato nello sfondo quando situato nella parte superiore di altri controlli nell'emulatore. Per risolvere questo problema, accertarsi che dietro l'elemento multimediale non sia presente nulla (ad esempio, un ordine z inferiore di).
  7. Viene applicato alle applicazioni e giochi Silverlight e XNA Framework: è necessario rimuovere qualsiasi logica che imposta Guide.SimulateTrialMode su true prima di inviare l'applicazione Windows Phone 7 per la certificazione finale. Mentre questa proprietà non influisce sulla modalità di prova nei giochi del Marketplace di Windows Phone, ha un effetto indesiderato su Guide.ShowMarketplace nei giochi con licenza di prova.
  8. Se si naviga da una pagina all'altra con una mappa, la funzione di zoom indietro o zoom avanti smette di funzionare. Se mediante un'applicazione si naviga su più pagine con mappe, non aggiungere la mappa al file con estensione xmal. Includere invece il codice che attende il caricamento dell'intera pagina prima di creare la mappa e aggiungerla alla pagina.
  9. In alcuni casi, scrivere in una colonna blob di classifica più volte può causare la generazione di InvalidOperationException nelle chiamate successive a LeaderboardReader.EndRead. Questa eccezione può continuare a essere generata dopo il riavvio dell'applicazione o durante l'esecuzione di altre applicazioni nello stesso dispositivo che utilizza le classifiche di amici Xbox LIVE®.
  10. Se il codice rimuove un pulsante della barra delle applicazione che NON sia l'ultimo, quindi inserisce un nuovo pulsante, l'ordine dei pulsanti verrà modificato e uno di questi diventa una voce di menu della barra delle applicazioni.
    Se si verifica questo problema, è possibile rimuovere tutte le voci della barra delle applicazioni e riaggiungerle. Se è necessario modificare un pulsante singolo, è possibile aggiornarlo direttamente anziché rimuoverlo, quindi aggiungere un pulsante aggiornato.
  11. Il dispositivo non può essere sbloccato mentre è in corso la sincronizzazione di Zune®. Se si tenta di sbloccare il dispositivo prima che Zune abbia terminato la sincronizzazione, viene visualizzato il messaggio di errore seguente:

    Errore: impossibile connettersi al telefono. Verificare che il software Zune sia in esecuzione e che sia stata stabilita la relazione di sincronizzazione di Zune con il telefono.
  12. Se l'applicazione tenta di accedere a un sito Web mediante Wi-Fi utilizzando HTTPWebRequest e il sito viene bloccato a causa di restrizioni del Wi-Fi, viene restituita l'eccezione ArgumentNullException anziché l'eccezione WebException prevista. Per risolvere questo problema, utilizzare una clausola catch non specifica (ad esempio catch (Exception e){..}) nell'applicazione.
  13. Non è possibile effettuare una chiamata diretta a MessageBox.Show dal costruttore poiché non verrà eseguita fino a quando Application.Startup non viene elaborato. Per risolvere questo problema, utilizzare Dispatcher.BeginInvoke. Ad esempio:

    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(Test);

    void Test()
    {
    MessageBox.Show("Test", MessageBoxButton.OK);
    }
  14. MultiScaleImage.ZoomAboutLogicalPoint non esegue il rendering della scena aggiornata se MultiScaleImage.UseSprings è impostato su false. Ciò potrebbe non essere un problema se un altro elemento o logica danneggiasse la scena, come ad esempio un'animazione. Tuttavia, se questo problema non viene risolto da altre operazioni che danneggiano la scena, esistono due soluzioni:
    • Inserire la chiamata ZoomAboutLogicalPoint tra i set UseSprings se questi sono impostati su false (MultiScaleImage = false) e si sta utilizzando il metodo MultiImageScale.ZoomAboutLogicalPoint, quindi è possibile utilizzare l'esempio di codice seguente:
      deepZoomImage.UseSprings = true;
      deepZoomImage.ZoomAboutLogicalPoint(1.5, 0.5, 0.5);
      deepZoomImage.UseSprings = false;

      Utilizzando ZoomAboutLogicalPoint tra le due impostazioni del valore UseSprings con l'ultimo set di impostazioni impostato su false, viene conservato l'effetto desiderato di avere UseSprings disattivato e la scala viene aggiornata.
    • -OPPURE- L'implementazione gestita della panoramica e dello zoom di ZoomAboutLogcialPoint non viene influenzata da questo problema quando si utilizza la proprietà ViewportWidth e/o ViewportOrigin. La seguente implementazione gestita di ZoomAboutLogicalPoint utilizza ViewportWidth e ViewportOrigin per risolvere questo problema di rendering:
      public static void ZoomAboutPoint(MultiScaleImage multiScaleImage, double zoomFactor, Point centerPoint)
      {
      double newZoomViewportWidth = multiScaleImage.ViewportWidth / zoomFactor;

      double centerPointXRatio = (centerPoint.X - multiScaleImage.ViewportOrigin.X) / multiScaleImage.ViewportWidth;
      double centerPointYRatio = (centerPoint.Y - multiScaleImage.ViewportOrigin.Y) / multiScaleImage.ViewportWidth;
      double finalcenterPointX = centerPoint.X - (newZoomViewportWidth * centerPointXRatio);
      double finalcenterPointY = centerPoint.Y - (newZoomViewportWidth * centerPointYRatio);
      multiScaleImage.ViewportOrigin = new Point(finalcenterPointX, finalcenterPointY);
      multiScaleImage.ViewportWidth = new ZoomViewportWidth;
      }

  15. Prestare molta attenzione nell'utilizzo degli inizializzatori di tipo statico (noti anche come costruttori di classe). Se un inizializzatore di tipo statico richiama un'operazione di blocco direttamente o indirettamente, potrebbe verificarsi un deadlock e l'applicazione si bloccherà. Ad esempio, se l'inizializzatore statico richiama DateTime.Now, l'applicazione si bloccherà perché l'API utilizza internamente il blocco per fornire la thread safety. La soluzione alternativa è utilizzare un costruttore di istanze che può controllare e inizializzare i dati una volta sola.
  16. Quando l'assembly della piattaforma tenta di caricare un assembly dell'utente e non riesce, non verrà visualizzata alcuna eccezione e non verrà rilevata facilmente la perdita di dati. Questo può verificarsi se la piattaforma sta tentando di serializzare qualcosa nell'assembly dell'utente.
  17. La proprietà PhoneApplicationPage.State del valore viene conservata solo se contiene valori. Se si imposta un valore State per la pagina e si passa a un'altra pagina, quindi si torna indietro e si rimuove il valore dall'insieme State, quando ci si sposta e si torna indietro un'altra volta, la proprietà sarà ancora presente perché il valore State non è stato mantenuto. Una soluzione alternativa è progettare l'applicazione per impostare i valori dello stato su null invece di rimuoverli. Un'altra soluzione alternativa è mantenere tutte le volte un valore fittizio nell'insieme in modo che il dizionario State venga sempre salvato.
  18. Per i progetti esistenti, il controllo ListViewItem è stato rimosso. Può essere necessario rimuovere la definizione di stile per questo elemento da App.xaml. Fare riferimento a mpc:ListViewItem.
  19. In questa versione, i callback per frame (ad esempio, la gestione dell'evento CompositionTarget.Rendering) devono essere utilizzate il meno possibile perché le prestazioni possono risultare non ottimali.
  20. ApplicationBar e le classi correlate non possono partecipare all'associazione dati e agli ambiti dei nomi, quindi sarà necessario utilizzare il code-behind se si desidera modificare le proprietà a livello di codice.
  21. Quando esiste lo stesso spazio dei nomi tra Silverlight e Windows Phone, premendo F1 verrà mostrata la Guida di Silverlight. Questo è il comportamento predefinito per Visual Studio 2010.

Visual Studio 2010 Express per Windows Phone

  1. Per modificare lo spazio dei nomi dell'applicazione, è necessario modificare i file seguenti: [nomeprogetto].csproj, App.xaml e App.xaml.cs
    • Nel file [nomeprogetto].csproj, individuare il tag <SilverlightAppEntry> e sostituire il nome dello spazio dei nomi corrente con il nome dello spazio dei nuovi nuovo. A tale scopo, modificare <SilverlightAppEntry>OldNamespace.App</SilverlightAppEntry> in <SilverlightAppEntry>NewNamespace.App</SilverlightAppEntry>.
    • Nel file App.xaml, individuare la seguente riga x: Class=”OldNamespace.App" e modificarla in x:Class="NewNamespace.App".
    • Nel file App.xaml.cs, individuare la dichiarazione dello spazio dei nomi e modificare lo spazio dei nomi OldNamespace nello spazio dei nomi NewNamespace.
    • Selezionare lo spazio dei nomi corretto e classificarlo come Oggetto di avvio nelle proprietà del progetto.
  2. Quando il telefono viene sbloccato utilizzando lo strumento di registrazione di sviluppo per Windows Phone, è possibile che venga visualizzato un messaggio di errore che indica che il nome del dispositivo è in uso. Ciò si verifica se lo stesso dispositivo è stato precedentemente sbloccato utilizzando lo stesso account. Sono possibili due opzioni per risolvere questo problema:
    • Utilizzare il client Zune per assegnare un nome diverso al dispositivo prima di sbloccarlo.
    • -OPPURE- Prima di sbloccare il dispositivo, rimuovere la registrazione del dispositivo. Per sbloccare il dispositivo, accedere al portale degli sviluppatori di Windows Phone 7, fare clic su Applicazioni, accedere all'account e fare clic su Registrazione dispositivo.
  3. In alcuni scenari, il sistema può esaurire la memoria durante l'assemblaggio XAP. Si verificano casi in cui l'assemblaggio XAP può generare un'eccezione di memoria insufficiente. Ciò tende a verificarsi più spesso per progetti molto grandi o in progetti con un numero elevato di file che sono stati compressi in XAP. Può accedere per entrambi i progetti Silverlight e XNA Framework. Per risolvere questo problema, effettuare una delle seguenti operazioni:
    • Aggiungere memoria.
      -OPPURE-
    • Utilizzare un sistema operativo a 64 bit, utilizzare VPDExpress.exe invece di devenv.exe, eseguire le compilazioni al di fuori di Visual Studio, chiudere TFS e altre finestre per ridurre la dimensione di memoria devenv.exe.
  4. Gli strumenti di sviluppo per Windows Phone includono i componenti elencati di seguito. Tuttavia, questi componenti non sono supportati.
    • Profiler
    • IntelliTrace
    • Lab Management
    • Testing
    • Componenti database
      • Mostra origine dati
      • Aggiungi nuova origine dati
      • Confronto schema

Emulatore di Windows Phone

  1. Supporto GPU: l'emulatore di Windows Phone supporta l'emulazione della periferica GPU utilizzando la GPU dell'host in un PC che supporta DDI versione 10 e successive e DirectX versione 10 e successive. In tutti gli altri computer, l'emulatore esegue il fallback all'emulazione del software che non è supportata sulla piattaforma. Per ulteriori informazioni, vedere Requisiti del sistema e installazione dell'emulatore di Windows Phone nella documentazione degli Strumenti di sviluppo per Windows Phone su MSDN.
    È possibile verificare se il PC supporta la configurazione consigliata eseguendo 'dxdiag' da una qualsiasi finestra della riga di comando.

    In Windows Vista SP2, sono richiesti anche i quattro aggiornamenti che fanno parte di KB 971644 per supportare la distribuzione nell'emulatore di Windows Phone.
    I seguenti aggiornamenti a cui si fa riferimento in KB 971644 sono richiesti per i sistemi Windows Vista basati su x86:

    I seguenti aggiornamenti a cui si fa riferimento in KB 971644 sono richiesti per i sistemi Windows Vista basati su x64:

  2. Se il fuso orario del computer host viene modificato mentre l'emulatore di Windows Phone è in esecuzione, il fuso orario dell'emulatore non viene aggiornato.
  3. Fiddler non è supportato in questa versione. Se si configura Fiddler per tenere traccia di tutto il traffico di rete, l'emulatore non può connettersi alla rete. Per connettersi alla Intranet dall'emulatore di Windows Phone mentre Fiddler tiene traccia del traffico di rete nel computer host, attenersi alla seguente procedura. Tuttavia, Fiddler non monitorerà il traffico di rete dell'emulatore di Windows Phone.
    • Configurare Fiddler per tenere traccia solo del traffico Internet.
    • Utilizzare le impostazioni proxy manuali e ignorare il server proxy per gli indirizzi locali.
    • Ciò consentirà all'emulatore di connettersi a un sito Intranet.
  4. Quando l'emulatore di Windows Phone è in esecuzione in Windows Vista, si verificano alcuni guasti acustici causati da pacchetti audio persi durante la riproduzione di contenuto audio come file multimediali o avvisi. Questo problema non si verifica quando l'emulatore è in esecuzione in Windows 7.
  5. Quando si utilizza MediaPlayerLauncher nell'emulatore, i fotogrammi video vengono sottoposti al rendering solo se si continua a fare clic sull'interfaccia utente. Ad esempio, se si fa clic, verranno visualizzati uno o due fotogrammi e il display diventerà nero. Se si continua a fare clic, verrà visualizzato l'intero video.
  6. Poiché l'emulatore non contiene tutti i componenti di Windows Phone 7, alcuni launcher e selettori potrebbero non funzionare come previsto (ad esempio posta elettronica, SMS) Per ulteriori informazioni, vedere Supporto per launcher e selettori nell'emulatore di Windows Phone.
  7. Multimediale: l'emulatore supporta solo il contenitore VC-1 (profili avanzati, principali e semplici WMV) per la codifica video.
  8. L'emulatore non supporta le modifiche dell'orientamento quando la tastiera viene abilitata. È necessario disabilitare la tastiera premendo il tasto Pausa/Interrompi o PgGiù/PgSu quindi ruotare l'emulatore.
  9. L'istanza di una macchina virtuale esistente di Virtual Box si chiude quando l'emulatore di Windows Phone viene avviato in un PC host con la virtualizzazione hardware abilitata.
  10. L'istanza di una macchina virtuale esistente di VMWare si chiude quando l'emulatore di Windows Phone viene avviato in un PC host con la virtualizzazione hardware abilitata.
  11. Per eseguire i giochi XNA Framework nell'emulatore in un computer host Windows Vista, è necessario che sia stato installato Windows Vista SP2. Per ulteriori informazioni sui requisiti per l'esecuzione dei giochi XNA Framework, vedere la sezione Distribuzione e debug di Windows Phone in XNA Game Studio.

Sviluppo di XNA Game

  1. Se il riferimento a mscorlib viene rimosso da un progetto XNA Game Studio, non può essere aggiunto di nuovo al progetto tramite l'interfaccia di Visual Studio. Se si tenta di aggiungere un riferimento all'assembly mscorlib in un progetto di gioco XNA Game Studio Windows dopo che questo riferimento è stato rimosso, viene visualizzato un messaggio: "Impossibile aggiungere un riferimento a 'mscorlib'. Un riferimento a questo componente è già stato creato automaticamente dal sistema di compilazione."

    Per i progetti di giochi Windows Phone e Xbox 360®, il tentativo di aggiungere un riferimento all'assembly mscorlib dopo che è stato rimosso non determinerà la visualizzazione di un messaggio di errore, ma il riferimento non verrà aggiunto al progetto. Per tutti i progetti di giochi XNA Game Studio, la compilazione avrà esito negativo e verrà visualizzato il seguente messaggio di errore: "Il tipo predefinito 'System.Object' non è definito né importato."

    Per risolvere questo problema, aprire il file .csproj e aggiungere di nuovo il riferimento a questa libreria:

    <Reference Include="mscorlib">
    <Private>False</Private>
    </Reference>
  2. L'impostazione CopyLocal non è supportata per gli assembly XNA Framework per i progetti da distribuire a Windows Phone o Xbox 360. Per i progetti Xbox 360, i file vengono distribuiti, ma non sono necessari e verranno ignorati. In Windows Phone, impostare CopyLocal su true determinerà un'eccezione MissingMethodException, una funzionalità mancante o un immediata uscita dal gioco.
    a. Per il riferimento di assembly Microsoft.Xna.Framework, l'applicazione genererà un'eccezione MissingMethodException.
    b. Per i riferimenti di assembly Microsoft Xna.Framework.Game o Microsoft.Xna.Framework.Graphics, il gioco verrà avviato, ma verrà immediatamente interrotto.
    c. Per il riferimento di assembly Microsoft.Xna.Framework.Input.Touch, il gioco verrà eseguito, ma il tocco non funzionerà.

    Per risolvere questo problema, impostare la proprietà CopyLocal del riferimento di assembly su false. Per ulteriori informazioni su come eseguire questa operazione, vedere Procedura: impostare la proprietà Copia localmente di un riferimento.
  3. Nel callback a BeginGetProfile, al parametro IAsyncResult talvolta verrà associata la proprietà AsyncState impostata non erroneamente su null. Questo determina l'eccezione NullReferenceExeption se si accede alla proprietà AsyncState. Per risolvere questo problema, definire il parametro del callback di BeginGetProfile come delegato. Per ulteriori informazioni su come effettuare questa operazione, vedere Utilizzo di un delegato AsyncCallback per terminare un'operazione asincrona.
  4. Lo stato dell'effetto non viene copiato durante la clonazione di Effect per la proprietà Effect e non verrà ripristinato lo stato originale di rendering quando l'effetto viene applicato durante le chiamate a Mesh.Draw. Le modifiche dello stato non influiranno sulle proprietà dello stato del rendering GraphicsDevice e le modifiche successive alle proprietà dello stato del rendering GraphicsDevice potrebbero non aggiornare lo stato del dispositivo grafico. Questi stati possono essere reimpostati in alcune condizioni come quando si chiama SpriteBatch.Draw.
  5. Le impostazioni della riga di comando dell'evento di precompilazione e della riga di comando dell'evento di postcompilazione non possono essere salvate o modificate nella scheda Eventi di compilazione della pagina Proprietà progetto per i progetti di contenuto XNA Game Studio. Questi campi possono essere modificati nella pagina Eventi di compilazione, ma le impostazioni non verranno salvate. Gli sviluppatori possono modificare manualmente il file .contentproj per aggiungere le impostazioni della riga di comando dell'evento di precompilazione e postcompilazione e queste impostazioni verranno visualizzate nella scheda Eventi di compilazione in un campo di sola lettura.
  6. Visual Studio si arresta in modo anomalo quando si aggiungono nuovi percorsi di riferimento a progetti di contenuto dalla pagina di proprietà di progetto. I percorsi di riferimento possono essere aggiunti modificando manualmente il file .contentproj.user.

    <PropertyGroup>
    <ReferencePath>C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\</ReferencePath>
    </PropertyGroup>


    Dopo aver aggiunto i percorsi di riferimento modificando manualmente il file .contentproj.user, queste impostazioni saranno visibili nella scheda Percorsi riferimento delle pagine delle proprietà di Visual Studio per il progetto di contenuto.
  7. Se il progetto di contenuto fa riferimento a più di un progetto di gioco o di libreria di giochi destinato alla stessa piattaforma nella stessa soluzione, viene visualizzato il seguente messaggio di errore di compilazione:

    Impossibile copiare il file {nomefile}

    Questo errore si verifica perché il contenuto viene eliminato dalla cartella di output del contenuto quando più di un progetto destinato alla stessa piattaforma contiene riferimenti a un progetto di contenuto condiviso. Per risolvere questo problema, aggiungere il riferimento al progetto di contenuto al progetto di libreria di giochi, quindi fare riferimento alla libreria di giochi da qualsiasi altro progetto nella soluzione.
  8. Gli sviluppatori devono deselezionare l'analisi D3DX per eseguire il PIX per lo strumento di prestazioni di Windows.
  9. I progetti di test Visual Studio 2010 non verranno eseguiti se il progetto di test fa riferimento a un progetto di contenuto XNA Game Studio. Gli sviluppatori devono deselezionare i progetti di contenuto quando si utilizza la Creazione guidata test.
  10. XNA Game Studio non supporta più i file FBX che contengono più animazioni. Un gioco visualizzerà più copie della prima animazione se un file FBX specifica più animazioni.
  11. Gli sviluppatori XNA Game devono prendere in considerazione l'implementazione delle proprie schermate iniziali.
    Questa modifica non influirà sulla capacità di eseguire i giochi. Nei giochi XNA che contengono un file SplashScreenImage.jpg, la schermata iniziale viene visualizzata solo per breve tempo, il che può creare un'esperienza poco piacevole. L'implementazione della schermata iniziale nel codice di avvio del gioco consentirà di controllare il momento in cui viene visualizzata e la durata della visualizzazione. Prendere in considerazione i seguenti consigli quando si creano le schermate iniziali per i giochi:
    • Mantenere una dimensione ridotta dell'assembly della voce. Tutti gli assembly della voce vengono firmati e verificati all'avvio dell'applicazione; pertanto, questo avviso vale per i giochi Silverlight e XNA. La convalida ha un costo ELEVATO. Per impostazione predefinita, Silverlight aggiunge le risorse (trame e così via) come risorse gestite all'assembly della voce. Anziché aggiungere le risorse all'assembly, è necessario aggiungerle manualmente al file XAP.
    • In Initialize() attenersi alla seguente procedura:
      1. Chiamare base.Initalize(). In questo modo si creerà GraphicsDevice correttamente.
      2. Caricare la trama. Per un caricamento rapido dell'immagine, attenersi alle seguenti linee guida:
        • Ridimensionare la trama in base alla risoluzione e all'orientamento di destinazione del gioco.
        • Impostare la trama in modo da ottenere un ridimensionamento automatico alla potenza di 2.
        • Utilizzare il formato compresso DXT.
      3. Creare SpriteBatch.
      4. Eseguire il rendering della trama.
      5. Chiamare GraphicsDevice.Present().
    • In Draw(), continuare a disegnare la trama di avvio ed eventualmente passare a un'animazione di caricamento non appena vengono caricate le risorse.

Distribuzione e debug di Windows Phone in XNA Game Studio

  1. XNA Game Studio verificherà l'esistenza di una scheda grafica DirectX 10 o versioni successive con un driver WDDM 1.1 prima della distribuzione all'emulatore di Windows Phone. Se la scheda grafica non supporta DirectX 10 o versioni successive, verrà visualizzato il seguente messaggio nella finestra degli errori di Visual Studio:
    Distribuzione non riuscita con il seguente errore: l'adattatore di visualizzazione attuale non soddisfa i requisiti dell'emulatore per eseguire le applicazioni XNA Framework.

    Lo strumento DirectX Caps Viewer può essere utilizzato per determinare se una scheda grafica supporta DirectX 10 o versioni successive e se è installato il driver WDDM 1.1. Questo strumento è disponibile per il download tramite DirectX SDK.

    Per determinare se una scheda grafica supporta DirectX 10 o versioni successive, attenersi alla seguente procedura:
    1. In DirectX Caps Viewer, espandere la cartella dei dispositivi DXGI 1.1, quindi espandere la cartella di livello successivo relativa alla scheda video. Sotto questa cartella, è possibile visualizzare le cartelle per Direct3D® 10 e Direct3D 10.1.
    2. Espandere la cartella Direct3D 10.1 e ricercare la voce Feature Level. In questa cartella, verrà visualizzata una voce per D3D10_FEATURE_LEVEL_10_0 o per D3D10_FEATURE_LEVEL_10_1 se la scheda grafica supporta DirectX 10 o versioni successive. Se la voce Feature Level indica un livello di funzionalità pari a 9_n o inferiore, non può supportare le funzionalità di Direct3D richieste dall'emulatore di Windows Phone.

    Se viene visualizzato questo messaggio di errore e la scheda grafica è in grado di supportare DirectX 10 come indicato dallo strumento DirectX Caps Viewer, è necessario fare riferimento al sito Web relativo al produttore della scheda grafica per verificare se è disponibile un driver più recente.

    In Windows Vista SP2, sono richiesti anche i quattro aggiornamenti che fanno parte di KB 971644 per supportare la distribuzione all'emulatore di Windows Phone.
    I seguenti aggiornamenti a cui si fa riferimento in KB 971644 sono richiesti per i sistemi Windows Vista basati su x86: I seguenti aggiornamenti a cui si fa riferimento in KB 971644 sono richiesti per i sistemi Windows Vista basati su x64:
  2. Nei dispositivi Windows Phone, VertexBuffer.GetData non restituirà risultati corretti per l'overload di questo metodo che consente agli sviluppatori di impostare il parametro vertexStride. L'accesso ai dati con questo overload restituirà i dati corretti per i giochi dell'emulatore di Windows Phone, Windows e Xbox 360. Come soluzione per i giochi di Windows Phone, i giochi devono leggere l'intero vertex buffer anziché utilizzare il vertex stride per individuare gli elementi.
  3. MediaPlayer.Play genererà un'eccezione InvalidOperationException se si esegue il client Zune nel PC durante il debug o quando si utilizzano i giochi in un Windows Phone vincolato. Questa eccezione visualizzerà un messaggio di eccezione errato: "Riproduzione del brano non riuscita. Verificare che il brano non sia protetto da DRM. I brani protetti da DRM non sono supportati dai creatori di giochi." Questo messaggio di eccezione è errato e verrà visualizzato anche se il brano non è protetto da DRM. Per risolvere questo problema, chiudere il client Zune durante il debug o quando si esegue un gioco in un Windows Phone vincolato.
  4. Se il gioco utilizza un orientamento orizzontale, l'emulatore di Windows Phone capovolgerà erroneamente il contenuto del buffer nascosto quando il buffer viene sottoposto al rendering durante l'inizializzazione e la chiusura del gioco. I fotogrammi di cui è stato eseguito il rendering verranno capovolti sia dall'alto verso il basso che da sinistra a destra a seconda dell'impostazione DisplayOrientation. Questo comportamento verrà esclusivamente osservato quando si inizializza e si chiude il gioco nell'emulatore.
  5. Nell'emulatore di Windows Phone, il canale dell'indice bone SkinnedEffect deve essere specificato come uno dei formati degli elementi del vertice con numero intero, Byte4, Short2 o Short4. Questo stesso set di formati di dati con numero intero non può essere utilizzato per altri canali di input dello shader come ad esempio, i colori, le posizioni e le coordinate delle trame nell'emulatore. Si può utilizzare qualsiasi formato del vertice con un qualunque canale di input dello shader nei dispositivi Windows Phone, Xbox 360 e Windows.
  6. Se un progetto non è mai stato distribuito e il progetto di gioco non è stato configurato per la compilazione e la distribuzione, la distribuzione del gioco avrà esito negativo e verrà visualizzato il messaggio di errore: "Impossibile avviare l'applicazione per eseguire il debug. Verificare che l'applicazione sia installata nel dispositivo di destinazione." Se il gioco è stato distribuito in precedenza nel dispositivo, non verrà visualizzato alcun messaggio di errore, ma il gioco non verrà distribuito e la versione del gioco distribuita in precedenza verrà avviata durante il debug. Per impostare un progetto di gioco per la compilazione o la distribuzione, attenersi alla seguente procedura:
    1. In Visual Studio® 2010 Express per Windows Phone, fare clic su Strumenti, quindi scegliere Impostazioni e fare clic su Impostazioni avanzate per abilitare l'elenco a discesa Configurazioni soluzione.
    2. Dall'elenco a discesa Configurazioni soluzione nella barra degli strumenti standard, selezionare Gestione configurazione.
    3. Selezionare le caselle di controllo Genera e Distribuisci.

 

Informativa sulla riservatezza e sul copyright

Le informazioni contenute nel presente documento, compresi i riferimenti a URL e ad altri siti Web, sono soggette a modifiche senza preavviso. Se non specificato diversamente, le società, le organizzazioni, i prodotti, i nomi di domini, gli indirizzi di posta elettronica, i logo, le persone, i luoghi e gli eventi citati negli esempi sono fittizi. Ogni riferimento a società, organizzazioni, prodotti, nomi di dominio, indirizzi di posta elettronica, logo, persone, luoghi ed eventi è puramente causale. Il rispetto di tutte le leggi applicabili in materia di copyright è esclusivamente a carico dell'utente. Senza limitazione per i diritti coperti da copyright, nessuna parte di questo documento potrà comunque essere riprodotta, archiviata o inserita in un sistema di registrazione oppure trasmessa in alcuna forma e con alcun mezzo (in formato elettronico, meccanico, su fotocopia, come registrazione o altro) per alcun scopo, senza l'espresso consenso scritto di Microsoft Corporation.

Microsoft può essere titolare di brevetti, domande di brevetto, marchi, copyright o altri diritti di proprietà intellettuale relativi all'oggetto del presente documento. Salvo quanto espressamente previsto in un contratto scritto di licenza Microsoft, la consegna del presente documento non implica la concessione di alcuna licenza su tali brevetti, marchi, copyright o altra proprietà intellettuale.

© 2010 Microsoft Corporation. Tutti i diritti riservati.

Microsoft Direct3D, DirectX, Expression, Expression Blend, Hyper-V, Internet Explorer, MSDN, Silverlight, Visual Studio, Windows, Windows Phone, Windows Server, Windows Vista, Xbox, Xbox 360, Xbox LIVE, XNA e Zune sono marchi del gruppo Microsoft.

Tutti gli altri marchi sono di proprietà dei rispettivi proprietari.