Windows Phone 7 e i linguaggi VB.Net e F#

(Post liberamente tradotto dal post pubblicato alla pagina
http://justinangel.net/WindowsPhone7VBnetAndFsharp
da Justin Angel. Utilizzo del post espressamente autorizzato dallo stesso autore)

Salve gente,

In questo articolo esamineremo il supporto a Windows Phone 7 per i linguaggi di programmazione Visual Basic .NET e F#. Il nostro obiettivo è quello di dimostrare che Windows Phone 7 invece può supportare le librerie di codice F# e VisualBasic.Net e i controlli utente.

Potete scaricare il progetto di esempio che abbiamo costruito in questo articolo da qui: http://JustinAngel.net/storage/WP7.Languages.zip.

Perchè?! Perché Microsoft ci ha abbandonato?!

clip_image001

La lettura del supporto online su Windows Phone 7 con VB.Net & F# può essere alquanto fuorviante.

Sui forum ufficiali MSDN WP7 possiamo trovare il seguente commento:

“Windows Phone 7 attualmente è supportato solo per C#” Mark Chamberlain

Durante il webcast di Windows Phone 7 un membro del pubblico ha chiesto il sostegno di VB.Net e fu risposto:

“Ho paura che Visual Basic non sia supportato per i dev di WP7” – Andy Wigley

Sul forum ufficiale Silverlight WP7 possiamo trovare molte domande circa il supporto di VB.NET in WP7 con risposte come:

Q: “Posso sviluppare applicazioni con VB.NET per Windows Phone 7?

A: “No, non puoi.

Nel blog tecnico TechRepublic è citato:

L’unico linguaggio che funzionerà sarà C#; non c’è necessità di adottare VB.NET.”  TechRepublic

E il “Canadian Heritage”, Ministro di lingue ufficiali, l’onorevole MP James Moore ha detto:

“Il mio cane indossa un impermeabile di partito conservatore”

clip_image003

Tutte le indicazioni di cui sopra, ad eccezione dell’ultima, sono tutte palesemente false. L’ultima dichiarazione è solo semplicemente imbarazzante. Windows Phone 7 infatti supporta Visual Basic .NET e F# e lo fa dal giorno numero 1.

Le applicazioni Windows Phone 7 sono in C#.

L’unica dichiarazione che può essere fatta e che è oggettivamente vera è che durante la Beta WP7 l’unica lingua supportata per il progetto di applicazione WP7 stesso è C#. Il che significa assolutamente nulla, poiché un’applicazione WP7 può fare riferimento a una libreria di Silverlight 3 in F# o in VB.NET.

Utilizzare F# in Windows Phone 7

Vediamo come installare una semplice applicazione WPF “Ciao mondo” con F#.

1) Create una nuova Applicazione Windows Phone 7 in C#.

clip_image005

2) aggiungete un progetto di libreria F# Silverlight alla soluzione.

clip_image007

clip_image009

clip_image010

3) Aprite il file module1.fs e scrivi del codice F#.
Faremo questo esempio di base con un semplice esempio non-UI “Hello world”.

module WP7FSharpLibrary
   type myClass = class
   new () as this = {}
   member s.myMethod() =
      “OMG! Windows Phone 7 is running F# code!”
end

3) Aggiungete un riferimento dall’applicazione WP7 alla nuova libreria F# e compilate la soluzione.

4) nell’applicazione C# in WP7, inizializzate la classe F# e invocate i membri appropriati.

// Constructor
public MainPage()
{
   InitializeComponent();
   var FSharpClass = new WP7FSharpLibrary.myClass();
   ContentGrid.Children.Add(new TextBlock()    {
       Text = FSharpClass.myMethod()});
}

Quando eseguiamo la nostra applicazione possiamo chiaramente vedere che F# si esegue in Windows Phone 7 senza un intoppo.

clip_image012

È anche possibile avere F# che inizializza i vari elementi dell’interfaccia utente e che crea l’interfaccia utente per noi. Ma questo non è davvero un compito in cui la programmazione funzionale eccelle, per cui eviterò di dimostrare questa cattiva pratica.

Utilizzare un UserControl Visual Basic .Net in Windows Phone 7

1) Create una nuova applicazione C# in Windows Phone 7.

clip_image013

2) Aggiungete un progetto di libreria Silverlight in VisualBasic.net alla soluzione.

clip_image014

clip_image016

clip_image017

3) Aggiungete un nuovo UserControl al progetto VB.Net Silverlight.

Nel nostro caso aggiungeremo un controllo utente semplice con un <ListBox /> con pochi elementi.    

Partial Public Class SL3VbNetUserControl
      Inherits UserControl
   Public Sub New
      InitializeComponent()
      Me.DataContext = 
         {“Hello from VB.Net on WP7!”, “World”, “Foo”, “Bar”, “Baz”}
   End Sub
End Class
<UserControl x:Class=”WP7.VisualBasicNet.SL3VbNetUserControl”
   xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;#8221;
   xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml&amp;#8221;
   xmlns:d=”http://schemas.microsoft.com/expression/blend/2008&amp;#8243;
   xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006&amp;#8243;
   mc:Ignorable=”d”
   d:DesignHeight=”300″ d:DesignWidth=”400″>
   <Grid x:Name=”LayoutRoot”>
      <ListBox ItemsSource=”{Binding}” />
   </Grid>
</UserControl>

4) Aggiungete un riferimento dall’applicazione WP7 alla nuova libreria VB.Net e compilate.

5) Aggiungete il nuovo UserControl in SilverLight (VB.Net) alla MainPage nel progetto WP7.

<!–ContentPanel – place additional content here–>
<Grid x:Name=”ContentGrid” Grid.Row=”1″>
   <VisualBasicNet:SL3VbNetUserControl 
xmlns:VisualBasicNet=”clr-namespace:WP7.VisualBasicNet;
assembly=WP7.VisualBasicNet” /> </Grid>

6) Se tentiamo di eseguire il progetto a questo stato, vedremo il seguente avviso di compilazione:

Warning    1    The primary reference “d:\visual studio 2010\Projects\WP7.Languages\WP7.VisualBasicNet\Bin\Debug\WP7.VisualBasicNet.dll” could not be resolved because it has an indirect dependency on the framework assembly “Microsoft.VisualBasic, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ which could not be resolved in the currently targeted framework. “Silverlight,Version=v4.0,Profile=WindowsPhone”. To resolve this problem, either remove the reference “d:\visual studio 2010\Projects\WP7.Languages\WP7.VisualBasicNet\Bin\Debug\WP7.VisualBasicNet.dll” or retarget your application to a framework version which contains “Microsoft.VisualBasic, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″.    WP7.Languages

clip_image019

Assicuratevi di aggiungere un riferimento dall’applicazione WP7 a Microsoft.VisualBasic.dll e che questa sia contrassegnata come “copia locale = false”.

Nel mio sistema di sviluppo trovo la DLL qui: c:\Program Files (x86)\Microsoft Silverlight\4.0.50524.0\Microsoft.VisualBasic.dll

clip_image021

clip_image023

Con un click destro sul riferimento “Microsoft.VisualBasic”, scegliete “properties” e impostate “Copy Local” a falso (False)”.

clip_image025

clip_image027

Dopo questo cambiamento possiamo eseguire il nostro progetto e lo UserControl Silverlight (Visual Basic .NET) appare nel nostro progetto Windows Phone 7.

clip_image029

Ovviamente, dopo aver aggiunto le DLL di Windows Phone 7 al nostro progetto VB.Net saremmo in grado di fare tutto ciò che può fare un possibile progetto C#: posizione GPS, notifiche Push, accelerometro, navigazione, eccetera.

Fine

Windows Phone 7 supporta tutti e tre i principali linguaggi di programmazione .NET 4.0: C#, VisualBasic.Net e F#.
Benché sia supportato solo C# durante la beta WP7 come radice dell’applicazione WP7, questo è un piccolo ostacolo che possiamo facilmente superare.

A seguito di questo post del blog mi aspetto che sia gli sviluppatori F# sia quelli di VB.Net  producano alcune applicazioni WP7. Sì, sto guardando proprio voi.

Pubblicato il 15 giugno 2015 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: