mercoledì 25 gennaio 2012

TinyCLR.it a HACK REALITY

Il prossimo 4 febbraio si terrà a Bologna “Hack Reality”, il nuovo hackathon targato WhyMCA, orientato all'interazione tra mobile e realtà. Fra le varie tecnologie utilizzabili ci sarà spazio anche per .NET Micro Framework quindi per gli appassionati del genere sarà una bella occasione per mettersi alla prova e creare qualcosa di originale sia con il .NET MF che con le altre interessanti tecnologie disponibili. Ci vediamo a Bologna per “interagire con la realtà”.

.NETCF: ResolveAssemblyReferences warnings

Durante lo sviluppo di un progetto per .NET CF mi è capitato di incontrare diversi warning del tipo:

ResolveAssemblyReferences: Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" from Version "2.0.0.0" [] to Version "3.5.0.0" [C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\ WindowsCE\System.Windows.Forms.dll] to solve conflict and get rid of warning.

Questo avviso viene visualizzato quando il compilatore ha caricato le librerie BCL del .NET Compact Framework 3.5, ma i metadati contenuti nei assembly referenziati fanno riferimento alle librerie BCL del .NET Compact Framework 2.0.

Per rimuovere questi warning è possibile aggiungere un file app.config al progetto e reindirizzare le associazioni degli assembly della 2.0 a gli equivalenti della 3.5. Di seguito è riportato un esempio di XML per reindirizzare la versione 2.0 di System.dll alla versione 3.5:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentassembly>
        <assemblyidentity name="System" culture="neutral" publickeytoken="969db8053d3322ac" />
        <bindingredirect  newVersion="3.5.0.0" oldVersion="2.0.0.0" />
      </dependentassembly>
    </assemblybinding>
  </runtime>
</configuration>

Sarà necessario aggiungere un elemento dependentassembly per ognuno dei warning ResolveAssemblyReferences che si ricevono dal compilatore.


In fine, assicurarsi che la proprietà Build Action del file app.config sia impostata su Content e la proprietà di Copy To Output Directory sia impostata su Only if newer

mercoledì 11 gennaio 2012

XeDotNet – Prossimi meeting

Anno nuovo, nuovo calendario di sessioni per il primo semestre 2012 di XeDotNet.

10/02/2012 - HTML5 e lo sviluppo mobile
  • Andrea Dottor - ASP.NET e lo sviluppo mobile?
  • Davide Senatore - Packaging HTML5 application with PhoneGap
09/03/2012 - Sviluppo client side
  • Andrea Boschin - What's new in Silverlight 5.0
  • Andrea Dottor - Il mondo è sempre più client. ASP.NET e lo sviluppo Client Side
30/03/2012 - Real world experience
  • Cristiano Simionato - Ma quanto costa Windows Azure?
  • Mirco Vanini - REST & .NET Micro FW - A Real Case
04/05/2012 - Uno sguardo a futuro
  • Davide Vernole - Visual Studio vNext - Application Lifecycle Management
  • Andrea Boschin - Sviluppare applicazioni Metro con Windows 8 e WinRT
15/06/2012 - Playing with gadgets
  • Mirco Vanini - Are you a Gadgeteer?
  • Davide Vernole - Playing with Team Foundation Server

In questo semestre avrò il piacere di tenere due sessioni su argomenti ed esperienze che mi vedono impegnato in prima persona sia nell’ambito lavorativo sia nell’ambito di community. La prima sessione sarà basata su un caso reale mentre la seconda riguarderò il .NET Gadgeteer.

    sabato 7 gennaio 2012

    NETMF Extension Methods

    Una delle caratteristiche più accattivanti di C# sono gli extension methods, peccato che per il .NET MicroFW non siano disponibili. Infatti tentando di utilizzarli si ottiene il seguente errore:

    Cannot define a new extension method because the compiler required type 'System.Runtime.CompilerServices.ExtensionAttribute' cannot be found. Are you missing a reference to System.Core.dll?

    Cercando una possibile soluzione ho trovato questo post che riporta la soluzione al problema:

    using System;
    using System;
    using System.Threading;
     
    using Microsoft.SPOT;
    using Microsoft.SPOT.Hardware;
     
    // Required for NETMF to recognized extension methods
    namespace System.Runtime.CompilerServices
    {
        [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
        public sealed class ExtensionAttribute : Attribute { }
    }
     
    // Extension methods for byte[] - typically would be put in a separate file
    public static class ByteArrayExtensions
    {
        // Method to create a string from UTF8-encoded bytes - be careful about null "this" being passed in
        public static string ToStringFromUTF8(this byte[] bytes)
        {
            return null == bytes ? String.Empty : new String(System.Text.Encoding.UTF8.GetChars(bytes));
        }
    }


    Come si vede dal codice riportato il trucco è definire l’attributo ExtensionAttribute.

    venerdì 9 dicembre 2011

    TinyCLR.it è finalmente online!

    Come vi avevo preannunciato qualche settimana fa siamo finalmente online. Nei prossimi giorni aggiungeremo vari contenuti che spero cattureranno sempre di più la vostra attenzione. Volevo ringraziare in modo particolare Lorenzo per lo sforzo che ha dedicato per la messa online del sito.

    martedì 6 dicembre 2011

    Slide della sessione: “Visual Studio Architect Tools”

    Ecco disponibile al download le slide del XeDotNet community meeting che ho tenuto il 2 Dicembre 2011 dal titolo Visual Studio Architect Tools inerente l’utilizzo dei Layer Diagram.

    “In Visual Studio Ultimate è possibile utilizzare un Layer Diagram per visualizzare l'architettura logica del sistema. Un Layer Diagram organizza gli elementi fisici nel sistema in gruppi logici e astratti chiamati Layer. Questi Layer consentono di identificare, descrivere e differenziare i tipi di attività eseguite dagli elementi. Ogni Layer può contenere anche livelli aggiuntivi o sottolivelli, che descrivono specifiche attività più piccole eseguite dai gruppi discreti di elementi. Utilizzando un Layer Diagram è possibile eseguire le attività seguenti: Comunicare l'architettura logica esistente o desiderata del sistema; Individuare i conflitti tra il codice esistente e l'architettura desiderata; Visualizzare l'impatto delle modifiche sull'architettura desiderata quando si esegue il refactoring, l'aggiornamento o l'evoluzione del sistema; Rinforzare l'architettura desiderata durante lo sviluppo e la manutenzione del codice includendo la convalida con le operazioni di archiviazione e compilazione. Durante questa sessione vedremo come sia possibile utilizzare questa tipologia di diagramma per migliorare la creazione e la manutenzione delle nostre applicazioni.”

    Volevo porgere un ringraziamento a tutte le numerose persone presenti al meeting, allo staff di XeDotNet ed in particolare a Andrea Boschin e a Davide Vernole, con cui ho condiviso la sessione, per il supporto tecnico, morale ed organizzativo della sessione e per l’opportunità che mi è stata data.

    martedì 29 novembre 2011

    XeDotNet Meeting - Visual Studio Architect Tools

    Volevo segnalarvi il prossimo meeting di XeDotNet che si terrà il 2 dicembre 2011

    UML con Visual Studio 2010
    Speaker: Davide Vernole

    Una corretta progettazione è alla base di un applicazione in grado di dare valore al cliente. Quando ci troviamo in questa fase del ciclo di vita di un'applicazione la domanda che spesso ci si pone è: quale notazione utilizzare? Visual Studio 2010 ci propone una possibile risposta indicando in UML la scelta standard da seguire. Sebbene l'implementazione di Visual Studio 2010 non sia UML al 100% la soluzione offerta aiuta a standardizzare l'approccio progettuale di uno o più team di sviluppo. La sessione si pone l'obiettivo di dimostrare queste funzionalità simulando l'intero processo di progettazione.

    Layer Diagram con Visual Studio 2010
    Speaker: Mirco Vanini

    In Visual Studio Ultimate è possibile utilizzare un Layer Diagram per visualizzare l'architettura logica del sistema. Un Layer Diagram organizza gli elementi fisici nel sistema in gruppi logici e astratti chiamati Layer. Questi Layer consentono di identificare, descrivere e differenziare i tipi di attività eseguite dagli elementi. Ogni Layer può contenere anche livelli aggiuntivi o sottolivelli, che descrivono specifiche attività più piccole eseguite dai gruppi discreti di elementi. Utilizzando un Layer Diagram è possibile eseguire le attività seguenti: Comunicare l'architettura logica esistente o desiderata del sistema; Individuare i conflitti tra il codice esistente e l'architettura desiderata; Visualizzare l'impatto delle modifiche sull'architettura desiderata quando si esegue il refactoring, l'aggiornamento o l'evoluzione del sistema; Rinforzare l'architettura desiderata durante lo sviluppo e la manutenzione del codice includendo la convalida con le operazioni di archiviazione e compilazione. Durante questa sessione vedremo come sia possibile utilizzare questa tipologia di diagramma per migliorare la creazione e la manutenzione delle nostre applicazioni.

    Venerdì 2/12/2011 ore 19:30
    Novotel Castellana
    Via Alfredo Ceccherini 21 - Venezia Mestre

    per iscrizioni:
    clicca qui