Async / Await, error: Cannot find all types required by the ‘async’ modifier

La llegada de “async / await” a nuestras vidas como desarrolladores ha sido un gran avance, no porque haga cosas excepcionales, sino porque nos permite mantener una limpieza y coherencia en el código que antes no teníamos.

Pero, a veces, las cosas nuevas nos dan algunos dolores de cabeza y, en concreto, en un proyecto de Silverlight 5 me he encontrado con este error “Cannot find all types required by the ‘async’ modifier”.

¿A qué se refiere esto? ¿Por qué si el compilador me reconoce las palabras claves “async” y “await” me devuelve este error? ¿Estaremos usando una versión incorrecta del Framework o tendremos algún conflicto?

Bueno, esto se debe a que no tenemos todo lo necesario instalado en nuestro proyecto que no viene preparado por defecto para hacer uso de “async / await” y deberemos instalar esta librería Microsoft.CompilerServices.AsyncTargetingPack que nos permitirá poder beneficiarnos de las ventajas que nos ofrece “async / await”.

La librería en cuestión podremos buscarla desde el gestor de paquetes de NuGet que viene en Visual Studio o bien podemos serguir estas instrucciones.

http://nuget.org/packages/Microsoft.CompilerServices.AsyncTargetingPack

Evento | TLP HackFest y Ponencias con TenerifeDev en la Tenerife Lan Party 2013

Un año más se celebra la Tenerife Lan Party que acoge a jugones, profesionales, frikys y todo tipo de “grupos y subgrupos” relacionados con el mundo tecnológico y, como no podía ser menos, TenerifeDev vuelve a participar en el área empresarial del evento TLP Innova con diversas acciones que este año llegan en forma de ponencias y la co-organización del Primer TLP HackFest.

¡No te lo puedes perder!

 

Ponencias:

Windows-8_1 Windows Blue: Fast & Fluid 8.1
Miércoles 17 de julio
17.00 – 18.00
windows-phone-8-logo1 Windows Phone: Más rápido, más funcional, más personal
Miércoles 17 de julio
18.30 – 19.30
visualstudio2013 Visual Studio 2013: Evolucionando para dominarlos a todos
Miércoles 17 de julio
19.30 – 20.30

 

 

HackFest

HackFest-Banner

De miércoles 17 de julio a sábado 20 de julio

Webcast | ¡Creando sitios poderosos con SharePoint 2013: Así se hicieron iberiansharepointconference.com y compartimoss.com!

Hoy pongo fin al parón comunicativo que he tenido en las últimas semanas y lo hago para informaros de que mañana participaré en el Webcast de MSDN “¡Creando sitios poderosos con SharePoint 2013: Así se hicieron iberiansharepointconference.com y compartimoss.com!” con una compañía inmejorable, Alberto Díaz, Adrían Díaz y Teresa Cebrián.

En este Webcast hablaremos sobre sitios de publicación con SharePoint 2013 y, para ello, usaremos como ejemplo la creación del sitio web Iberian SharePoint Conference y de la revista digital en castellano sobre SharePoint CompartiMOSS.

  • Fecha de inicio: 27/06/2013
  • Hora de inicio: 15:00 (GMT+01:00) Madrid, París
  • Fecha de finalización: 27/06/2013
  • Hora de finalización: 16:30 (GMT+01:00) Madrid, París

Para asistir a la retransmisión, podéis acceder a través de este enlace . Espero que os guste

P.D.: Tenemos un reto/apuesta que es conseguir ser Trending Topic, nos ayudas? Estad atentos mañana al Hashtag en Twitter

Evento–Taller | Desarrolla tu App para Windows 8 y Windows Phone

Mañana tendré el placer de impartir junto a Alberto Díaz un taller gratuito de desarrollo de aplicaciones para Windows Phone y Windows 8 en las jornadas de AdejeTec 2013 en el que trataremos de enseñar a los asistentes a crear sus propias aplicaciones y publicarlas en las Tiendas de Aplicaciones.

cursowindows8

AdejeTec consta de varias jornadas de formación relacionada con las TIC y, sobre todo para developers. Su objetivo es que todos los asistentes puedan estar al día en las nuevas tendencias y tecnologías sean del tipo que sean y que consigan sacar el mayor rendimiento y provecho de sus conocimientos. Además, siempre surge la gran verdad oculta de todo evento, el NetWorking ya que permite a desarrolladores de todas las tecnologías relacionarse entre ellos además de con empresarios, instituciones públicas, etc. De esta forma, todos podrán sacar mayor beneficio que el mero aumento de conocimientos.

Este será mi primer evento como Nokia Developer Champion y espero estar a la altura esperada, cosa fácil contando con maestros como Alberto Díaz. Espero veros a todos allí para poder compartir algo de conocimiento y, sobre todo, espero que el taller os anime a desarrollar aplicaciones para Windows Phone y Windows 8.

I'M A 

Off Topic | ¡Me han nombrado Nokia Developer Champion!

Hoy ha sido uno de esos días para enmarcar tanto personal como profesionalmente ya que, horas después de conocer que voy a ser el feliz padre de una princesita que viene en camino, me ha llegado un correo de Nokia con la grata noticia de que me han nombrado Nokia Developer Champion. Siendo sincero, estoy que no quepo en mi con tanta buena noticia junta.

Since 2006, Nokia has been selecting individuals from the Nokia developer community to join the Nokia Developer Champions Program – a recognition and reward program that honors a select group of mobile developers from around the world.

We are pleased to inform you that, as one of the outstanding talents in our developer community, you have been nominated as one of a few elite members of the Nokia Developer Champions Program. Congratulations!

 

¿Qué es el programa Nokia Developer Champions?

Una explicación resumen podría ser la siguiente: Es un programa que Nokia puso en marcha en 2006 para reconocer el trabajo en el desarrollo de aplicaciones móviles y servicio a la comunidad de desarrolladores de Nokia. De esta forma, anualmente se nombran los Nokia Developer Champions que los reconoce como líderes mundiales y tener acceso a servicios exclusivos que les permitan seguir colaborando con la comunidad y mejorar sus aportaciones.

Puedes encontrar toda la información relacionada con el programa en la página oficial

Agradecimientos

Pufff son muchos los que podría y debería nombrar aquí porque todos, absolutamente todos aquellos con los que he trabajado o hablado y discutido sobre tecnología y más concretamente sobre Apps móviles, habéis aportado granitos de arena para que reciba este galardón. Con esto creo que os he nombrado a todos pero, quiero hacer unas cuántas menciones especiales:

  • Alberto Díaz porque ha estado día tras día incentivándome, guiándome, ayudándome, enseñándome y animándome a dar lo mejor de mi y ser cada día un poco mejor en mi trabajo. Él es mi gran maestro Jedi o el maestro Po de  Kung Fu y me ha dejado jugar con todas las nuevas tecnologías en cuanto estuvieran posibles. WIndows 8, Windows Phone, MVC, SharePoint, Azure,… me ha enseñado de todo.
  • Josue Yeray porque es un tío grande y de él he aprendido a trabajar intentando ser realmente bueno, siguiendo los patrones, haciendo código bueno. Y porque siempre tiene un hueco para ayudar con una frase de ánimo y una gran sonrisa que te hacen disfrutar de haber contactado con él.
  • Jose Fortes y David Rodríguez que junto a Alberto y yo formamos TenerifeDev porque me han dado la oportunidad de participar ayudando a la comunidad de desarrolladores en todo lo que podamos y porque cada vez que montamos un evento, una conferencia o charla, unos talleres o simplemente nos reunimos, pasamos una momentos magníficos en los que compartimos impresiones, nos ponemos al día en tecnología y compartimos unas cervezas entre risas y arreglando el mundo.
  • Óscar Gutiérrez que me ha dado la posibilidad de entrar en este grupo y porque cada día se preocupa por ayudar con lo que pueda a los desarrolladores de Apps de Windows Phone en España a llevar sus aplicaciones más allá.
  • A General de Software porque hemos sido una familia estos años y me han permitido crecer como profesional.
  • A mi mujer que me aguanta cada día, me deja trabajar hasta las tantas sin rechistar y que cuida de nuestra pequeña princesa en su vientre mientras yo paso las horas pegado al teclado. A ti un gran beso por ser la mejor.

Windows Phone | SplashScreen personalizada con barra de progreso (ProgressBar)

Escenario

Como ya comenté en mi anterior artículo sobre cómo establecer la SplashScreen en una App de Windows Phone, ésta no deja de ser una imagen que debemos personalizar que indica al usuario que la aplicación se está abriendo pero, ¿qué ocurre si nuestra aplicación carga demasiados datos al inicio y necesitamos establecer una SplashScreen personalizada para poder indicar al usuario que la carga está en proceso?

Inicio

Solución

Lo que vamos a hacer es aprovechar el control Popup de Silverlight para mostrarlo sobre la vista principal de la aplicación mientras se realiza la carga de los datos necesarios. Este Popup contendrá como “background” la imagen de la SplashScreen y, además, un texto de carga y la barra de progreso (ProgressBar) que serán los que indiquen al usuario que se está realizando la carga de datos.

 

Paso 1

Crear un Control de Usuario que llamaremos ExtendedSplashScreenControl al que le quitaremos las dimensiones predefinidas de diseño

Quitar:

   1: d:DesignHeight="480" d:DesignWidth="480"

 

Al Grid principal del Control de Usuario le pondremos como Imagen de fondo la SplashScreen de la aplicación y, dentro del Grid, añadimos un TextBlock y la Barra de progreso de forma que quede así:

   1: <UserControl x:Class="ExtendedSplashScreen.Controls.ExtendedSplashScreenControl"

   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

   5:     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

   6:     mc:Ignorable="d"

   7:     FontFamily="{StaticResource PhoneFontFamilyNormal}"

   8:     FontSize="{StaticResource PhoneFontSizeNormal}"

   9:     Foreground="{StaticResource PhoneForegroundBrush}">

  10:     

  11:     <Grid x:Name="LayoutRoot" Width="480" Height="800">

  12:         <Grid.Background>

  13:             <ImageBrush Stretch="Fill" ImageSource="/SplashScreenImage.jpg"/>

  14:         </Grid.Background>

  15:         <Image Name="image1" 

  16:                    Stretch="Fill" 

  17:                    Source="SplashScreenImage.jpg" />

  18:         <StackPanel VerticalAlignment="Center" Margin="0,280,0,0">

  19:             <ProgressBar Name="progressBar1" BorderThickness="0" Margin="0,0,0,10" Background="#19FFFFFF" IsIndeterminate="True"/>

  20:  

  21:             <TextBlock HorizontalAlignment="Center" 

  22:                        Name="textBlock1" Text="Cargando datos..." 

  23:                        Foreground="Black" 

  24:                        FontSize="22" />

  25:         </StackPanel>

  26:     </Grid>

  27: </UserControl>

 

Paso 2

En el constructor de la vista principal MainPage.xaml.cs vamos a añadir la apertura del Control de usuario que acabamos de crear. Esto lo podemos hacer instanciando el Popup en una propiedad de la vista principal, asociándole el Control de usuario e indicando que se encuentra abierto.

   1: this.popup = new Popup(); 

   2: this.popup.Child = new ExtendedSplashScreenControl(); 

   3: this.popup.IsOpen = true; 

   4:  

   5: //Start Loading Data here

   6: ...

 

Paso 3

El proceso de carga de datos debería ser una tarea asíncrona por medio del uso de async/await en Windows Phone 8 o mediante BackgroundWorker o Manejadores de eventos en Windows Phone 7. En este caso, el ejemplo lo realizaré con async/await, por lo que creo un método asíncrono que tenga un tiempo de retardo de 5000 ms para que podamos apreciar el efecto y, tras este tiempo, simplemente se modifica la propiedad IsOpen del Popup a false para que se cierre.

   1: private async void LoadAsyncData()

   2: {

   3:     await Task.Delay(5000);

   4:     this.popup.IsOpen = false;

   5: }

 

Resultado

Result

 

A tener en cuenta

Es necesario que tengáis en cuenta que el ejemplo lo he hecho para la resolución de 480×800, con lo que habrá que hacer modificaciones para que funcione con todas las resoluciones, pero para eso habrá otro artículo ;o)

 

Descarga de código

Si quieres descargar el código de ejemplo, puedes hacerlo desde este enlace

download

WebMatrix 3 disponible para descargar

Ha llegado el momento que muchos desarrolladores y diseñadores web estábamos esperando, WebMatrix 3 ha visto la luz por fin y ya está disponible para su descarga desde la página oficial de WebMatrix o desde Web Platform Installer

WebMatrix-3-Download

 

El IDE de Microsoft para desarrollo web más popular, que ya nos permitía desplegar sitios de las plataformas más populares DotNetNuke, WordPress, Joomla, Orchard, etc. viene ahora cargado de novedades entre las que cabe destacar la conexión directa con Microsoft Azure y que nos permitirá desplegar hasta 10 sitios gratuitamente en esta plataforma que va creciendo a pasos agigantados y que hace pocos días se convirtió en un nuevo miembro del club de los productos que han generado más de 1 billón de dólares para Microsoft.

 

Características de WebMatrix 3

Las características más imporyantes de las que hace gala WebMatrix son las siguientes:

  • Diseñado para los lenguajes más usados: ASP.NET, PHP, Node.js, HTML5, JavaScript, CSS3, etc.
  • Optimizado para Open Source: Permite instalar aplicaciones web basadas en proyectos Open Source con sólo unos pocos clicks
  • Ayudante para la Nube: Con WebMatrix 3, publicar las aplicaciones en la nube es tan sencillo como darle al botón de publicar
  • Diseño para dispositivos móviles: WebMatrix 3 dispone de plantillas para dispositivos móviles
  • Control de código fuente con Git: Conéctate con GitHub, CodePlex y Team Foundation rápido y fácil para compartir el código con el mundo
  • Control de código fuente con Team Foundation Service: Conéctate con el mejor servicio de control de código fuente
  • Edición remota: Edita tus sitios remotamente con sólo conectarte a él
  • Extensiones de la Comunidad: Encuentra las extensiones que necesites como simulador de iPhone, Power Tools para Node.js, etc.

 

Empezando con WebMatrix 3

Nada más arrancar WebMatrix 3, nos aparecerá la pantalla de Login de Windows Azure para establecer la conexión y así poder realizar los despliegues de nuestros sitios directamente a la nube

WebMatrix-3-Windows-Azure

 

Si nos logueamos, aunque la pantalla de inicio a la que estábamos acostumbrados en WebMatrix 2.0 no cambia mucho, sí que apreciaremos ese cambio cuando accedamos a las opciones que nos aporta.

WebMatrix-3-Home

 

Mis sitios

En Mis sitios, si nos hemos logueado, podemos ver que WebMatrix nos muestra todos los sitios, locales, remotos y en la nube a los que tenemos acceso e, incluso si tenemos varias cuentas de Windows Azure como es mi caso, podemos filtrar los sitios desplegados en cada una de ellas.

WebMatrix-3-My-Sites

Nuevo sitio

Al crear un nuevo sitio, tenemos dos opciones, crear un sitio en blanco o partir de una plantilla de proyecto – instaladas o buscarlas en la galería web – de las más de 100 disponibles entre las que se encuentran algunas tan populares como DotNetNuke, WordPress, Joomla, Umbraco, Orchard, etc.

 

WebMatrix-3-Site-From-TemplateWebMatrix-3-Web-Gallery

Abrir

La opción “Abrir” nos permitirá acceder a la sección que queramos, conectarnos al TFS, a un sitio remoto, acceder a las carpetas locales, etc.

 

WebMatrix-3-Open

 

¡A diseñar y desarrollar sitios!

En cuanto al IDE en sí a la hora de desarrollar se pueden apreciar pocos cambios a simple vista, aunque puedo asegurar que el rendimiento de WebMatrix ha mejorado muchísimo a la hora de cargar los sitios y mientras se desarrolla.

Ahora ya sólo te queda empezar a programar y desplegar tus sitios gratuitamente en Windows Azure

WebMatrix-3-Html

SharePoint 2010 | Ocultar elementos de la masterpage en los “dialogs”

Problema

Cuando diseñamos una página maestra personalizada en SharePoint 2010, generalmente no reparamos en los cuadros de diálogo “dialogs” que se utilizan de forma muy común en prácticamente todos los elementos de SharePoint. Esto provoca que a la hora de mostrarse uno de estos cuadros de diálogo, aparezcan elementos como la cabecera o el menú vertical del panel lateral.

New-Page-Masterpage

Solución

La solución es muy sencilla. Todos aquellos elementos HTML que no queramos que salgan en los cuadros de diálogo debemos marcarlos con la clase “s4-notdlg”. Siguendo el ejemplo del problema y suponiendo que ese cabecera está declarada con un div, podemos hacer lo siguiente:

   1: <div id="divHeader" class="s4-notdlg">

   2:     ....

   3: </div>

 
Hecho esto, habremos conseguido que, automáticamente, estos elementos no sean mostrados en los cuadros de diálogo.

New-Page-Hide-Masterpage

Windows Phone | Cómo crear una SplashScreen para una App

Al contrario de lo que ocurría en Windows Phone 7.X donde sólo se disponía de una resolución de pantalla – WVGA (480 x 800) – y, por lo tanto, sólo había que crear una única SplashScreen para nuestras Apps, en Windows Phone 8, Microsoft ha introducido dos nuevas resoluciones de pantalla por lo que se hace necesario crear una SplashScreen para cada una de las diferentes resoluciones, 720p (720 x 1280) y WXGA (768 x 1280).

Windows Phone 7

En Windows Phone 7 basta con sustituir el fichero «SplashScreenImage.jpg«, que viene por defecto por la nueva SplashScreen con las dimensiones WVGA (480 x 800) y que se encuentra en el nodo raíz del proyecto de Windows Phone 7. Hay que prestar especial atención a que el fichero esté incluido como Content en la propiedad «Build Action«.

SplashScreen-480x800-WP7

 

Windows Phone 8

En Windows Phone 8 se hace necesario que creemos una SplashScreen diferente para cada una de las resoluciones disponibles como se muestra en la tabla siguiente.

Resolución

Dimensiones en px

Nombre del fichero

WVGA

480 x 800

SplashScreenImage.screen-WVGA.jpg

720p

720 x 1280

SplashScreenImage.screen-720p.jpg

WXGA

768 x 1280

SplashScreenImage.screen-WXGA.jpg

 
SplashScreen-720x1280SplashScreen-768x1280SplashScreen-480x800
 

Una vez se hayan creado los ficheros, tan sólo hay que desplegarlos en el nodo raíz del proyecto de Windows Phone 8 y, al igual que ocurre en Windows Phone 7, hay que tener especial cuidado con establecer la propiedad «Build Action» con el valor «Content»

Build-Action-Content

 

XNA Framework

Para poner una SplashScreen a un proyecto XNA no es necesario hacer uso del fichero SplashScreenImage.jpg sino que se debe mostrar una textura al inicio mientras se carga el contenido de la aplicación. Una posible forma óptima de hacerlo es la que nos indican en este artículo de la MSDN.

  • En el método Initialize():
    • Llamar a base.Initialize() para crear la propiedad GraphicsDevice
    • Cargar la textura
    • Dimensionarla a la resolución y orientación del juego
    • Establecer que la textura se auto-redimensione con un valor de 2
    • Usar el formato comprimido DXT
    • Crear una clase de tipo SpriteBatch
    • Renderizar la textura
    • Llamar al método GraphicsDevice.Present()
  • En el método Update(), cargar el contenido incrementalmente.
  • En el método Draw(), continuar dibujando la textura de inicio y entonces cambiar a una animación de loading tan pronto como estén cargados los datos.

Webcast Windows 8 | Disponibles los materiales del Webcast

Ayer tuve la gran oportunidad de ser el speaker del Webcast sobre Windows 8 Store Apps “Creando aplicaciones para Windows Store con XAML:. ¿Qué necesitan saber los Desarrolladores de .Net?”. Este Webcast que tenía que haberse emitido la semana pasada fue aplazado y gracias a eso pude ser designado como el speaker del mismo.

Durante sesión vimos cosas bastante interesantes como el patrón MVVM siguiendo las buenas maneras que Josué Yeray intenta inculcar a los desarrolladores españoles, también hablamos de cómo consumir y guardar datos, localización de las aplicaciones para tener alcance mundial con ellas, el uso de los nuevos controles XAML que nos permiten crear aplicaciones ricas, etc. Todo ello supuso un repaso completo pero superficial a todo lo que implica el desarrollo de Apps para Windows 8 y sólo ahondamos en cómo crear el patrón MVVM para nuestras aplicaciones e incidí que esto es particularmente importante si queremos compartir código entre Apps de Windows 8, Windows Phone 8 y otras plataformas, ya que tenemos la posibilidad de implementar el patrón en una Portable Class Library que podremos referenciar desde nuestros proyectos.

Como todo evento que se precie en el que se muestran ejemplos y código… no podía faltar el “efecto demo” que me absorbió durante unos minutos, aunque en este caso, se debía a que Live Meeting en Windows 8 tiene un pequeño problema a la hora de compartir el escritorio, por lo que hay que instalar un pequeño parche que no tenía en ese momento. Así que al final, acabé en “modo pulpo” como lo bautizó Alberto Díaz que me cedió su portátil para poder realizar las demos.

Modo Pulpo On

 

Para todos aquellos que deseen acceder a los materiales –grabación, presentación HF y ejemplos– os dejo este enlace desde donde os lo podréis descargar y empezar a programar vuestras Apps para Windows Store.

Download-Assets

 

También podéis acceder a los materiales (excepto los ejemplos) desde la dirección del webcast