AntonioPelleriti.it [aka z9]

I code, therefore I am

NAVIGATION - SEARCH

Articolo su IoProgrammo 208: Microsoft Graph API

Su IoProgrammo numero 208(Novembre2016), trovate un mio articolo dedicato alle API di Microsoft Graph, con un esempio per inviare mail tramite i servizi di Outlook.

 Titolo di copertina:

Programmiamo Office 365 sul Cloud, Impariamo a utilizzare le Microsoft Graph API per interagire con la suite Office e automatizzare qualsiasi operazione 

Programmare con C# 6: in arrivo

Finita la seconda rilettura delle bozze, iniziatala la fase di impaginazione e di impostazione grafica, non manca molto all'uscita in libreria di

Programmare con C# 6, guida completa

Non ho ancora una data di uscita certa, o altri dettagli, come il numero di pagine definitivo, o se qualche capitolo verrà escluso (e magari rilasciato su questo sito in pdf!).

Il libro copretutte le novità introdotte da C# 6, in modo completo ed in modo da rendere il testo il riferimento principale in lingua italiana sul linguaggio C#: l'obiettivo, come per la prima edizione, è stato quello di scrivere il miglior libro italiano su C# 6 (scusate la presuzione!).

Nell'attesa di aggiornarvi con maggiori dettagli di seguito l'elenco degli argomenti che è quasi definitivo.

  • 1. C# e la piattaforma .NET
  • 2. Concetti di base di C#
  • 3 Tipi e oggetti
  • 4 Espressioni e operatori
  • 5 Controllo di flusso
  • 6 Programmazione a oggetti in C#
  • 7 Ereditarietà e polimorfismo
  • 8 Gestione delle eccezioni
  • 9 Tipi generici e collezioni
  • 10 Delegate ed eventi
  • 11 LINQ
  • 12 Multithreading, Programmazione asincrona e parallela
  • 13 XML in C#
  • 14 Reflection, attributi e programmazione dinamica
  • 15 Accesso ai dati
  • 16 .NET Compiler Platform
  • 17 Applicazioni pratiche di C#
  • App. A Stringhe ed espressioni regolari
  • App. B Interoperabilità
  • App. C Risposte alle domande

Noterete la presenza di un nuovo capitolo, il 16, dedicato interamente ad una delle principali nuove funzionalità o caratteristiche di .NET e C# 6: cioè la .NET Compiler Platform, ed inoltre una appendice con le risposte alle domande poste alla fine di ogni capitolo.

 

Inglobare tutte le dll in un singolo exe e utilizzarle con la Reflection

La stragrande maggioranza delle applicazioni usa delle dll esterne, eventualmente di terze parti.

Quando l'applicazione deve essere distribuita anche gli assembly da cui dipende, cioè tutti i riferimenti esterni devono essere distribuiti assieme all'eseguibile. In generale lo si fa con la classica tecnica Xcopy, prendendo tutto quello che c'è nella cartella Bin/Release prodotta da Visual Studio per esempio, oppure creando un setup ad hoc che si occupi di tutto.

Un'altra possibile tecnica è quella di inglobare tutte le dll all'interno dell'eseguibile e quindi con la comodità di distribuire un solo file.

Supponiamo di avere una semplice applicazione Windows Forms, che utilizza una dll per esempio chiamata MyAssembly.dll.

Al progetto Windows Forms, che avrà un riferimento alla libreria, bisogna apportare una prima modifica, aggiungendo il file MyAssembly.dll come un normale file (click con il destro, Add Existing Item e selezione della dll) e quindi, fra le proprietà del file aggiunto, impostando il valore della proprietà Build Action a Embedded Resource.

A questo punto compilando l'applicazione, l'eseguibile prodotto conterrà la dll come risorsa inglobata. Potete verificarlo con un decompilatore come Reflector o JustDecompile.

 

 

Adesso bisogna fare in modo che a runtime l'applicazione sia in grado di recuperare la dll dalle risorse embedded.

Nel metodo Main dell'applicazione aggiungiamo un gestore dell'evento AssemblyResolve dell'AppDomain corrente:

 static void Main()
 {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
...

 

Il gestore dell'evento, si occupa di ricercare fra le risorse embedded l'assembly (l'evento si scatena al primo utilizzo dell'assembly riferito) e di restituirlo leggendone il contenuto e caricandolo con il metodo Assembly.Load:

private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            string dllName = new AssemblyName(args.Name).Name + ".dll";

            var asm = Assembly.GetExecutingAssembly();
            String resourceName = asm.GetManifestResourceNames().FirstOrDefault(rn => rn.EndsWith(dllName));
            if (resourceName == null) return null; // Non trovata

            using (var stream = asm.GetManifestResourceStream(resourceName))
            {
                Byte[] assemblyData = new Byte[stream.Length];
                stream.Read(assemblyData, 0, assemblyData.Length);
                return Assembly.Load(assemblyData);
            }
        }

 

 


 

Storia delle versioni di .NET, C# e Visual Studio.

Microsoft ha parlato per la prima volta della nuova piattaforma .NET, originariamente conosciuta come NGWS (Next Generation Web Services) alla conferenza PDC dell'11 luglio 2000. rilasciando una agli sviluppatori una Tech Preview.

La prima Beta 1 di .NET 1.0, vede invece la luce l'1 novembre 2000, seguita da una Beta 2 il 20/06/2001. 

Nella seguente tabelle sono riassunte le successive release della piattaforma .NET, delle specifiche di C# e dell'IDE Visual Studio.

Anno  .NET Framework C# Visual Studio
2002 1.0 1.0 Visual Studio .NET 2002
2003 1.1 1.2 Visual Studio .NET 2003
2005 2.0 2.0 Visual Studio 2005
2006 3.0 2.0
2007 3.5 3.0 Visual Studio 2008
2010 4.0 4.0 Visual Studio 2010
2012 4.5 5.0 Visual Studio 2012
2013 4.5.1 5.0 Visual Studio 2013

Storia delle versioni di .NET, C# e Visual Studio.

.NET Framework Versions, C# Releases, Visual Studio Editions history

 

Articolo: sviluppare app di disegno su Windows 8.x

Su IoProgrammo numero 189 (Gennaio/Febbraio 2014), trovate il mio articolo sulla programmazione di una mini applicazionie di disegno utilizzando le funzionalità touch di Windows 8. 

Titolo di copertina:

Tocco da DESIGNER
Programma un'app di disegno che sfrutta le funzioni touch di sistema

 

 

 

Build 2013, preview di Windows 8.1, Visual Studio 2013 e .NET Framework 4.5.1

Durante la prima giornata della conferenza Build 2013, grandi novità annunciate per noi sviluppatori .NET!

Oltre alla preannunciata preview di Windows 8.1 (http://windows.microsoft.com/it-it/windows-8/preview) è disponibile per il download anche la nuova versione 2013 Preview di Visual Studio, per iniziare da subito a provare le novità del nuovo sistema operativo.

http://www.microsoft.com/visualstudio/eng#2013-preview

Anche in versione express fra l'altro!

 

Per quanto riguarda invece il .NET Framework annunciata la versione 4.5.1 preview, le cui novità sono riassunte al link

http://blogs.msdn.com/b/dotnet/archive/2013/06/26/announcing-the-net-framework-4-5-1-preview.aspx

di cui, dal punto di vista della produttività dello sviluppatore, possiamo riassumere il contenuto con:

  • X64 edit and continue
  • Async-aware debugging
  • Managed return value inspection
  • ADO.NET idle connection resiliency
  • Improvements in Windows Store app development

Mi piace sottolineare le novità introdotte per lo sviluppo di interfacce grafiche XAML, con un sacco di miglioramenti che ci faranno risparmiare un sacco di tempo, per esempio che ne pensate di poter utilizzare l'intellisense nelle risorse (tipo {StaticResource ...}) o di poter andare alla definizione di un elemento XAML con un F12 (il classico Go to Definition). Qui un bel riassunto direttamente dalla conferenza http://www.irisclasson.com/2013/06/26/build-2013-what-is-new-in-xaml-highlights/

 

ABC# - Guida alla programmazione in C#

Sono passati tantissimi anni dalla prima stesura di questo libro, se non erro era il 2005, eppure ancora in tanti mi scrivono per chiedermi una copia del pdf, che fra l'altro ormai si trova facilmente digitando su qualsiasi motore di ricerca il titolo oppure semplicemente ricercando Guida di programmazione in C#.

Per quelli che comunque non fossero riusciti a reperirlo ecco qui il link 

ABC# guida alla programmazione in csharp.pdf (1,48 mb)

 

Se vuoi offrirmi un caffè o una birra... grazie!

 

 

La versione del libro aggiornata alle specifiche di C# 5.0 C#  6.0 è diventata un libro vero e proprio!

Programmare con C# - Guida alla completa, edito nel 2014 da LSWR

Programmare con C# 6 - Guida alla completa, edito nel 2016 da LSWR

http://www.antoniopelleriti.it/page/libro-csharp