Tech Conference 28.-29.5.2015 Visual Studio 2015, C#6,.NET4.6 Heikki Raatikainen #TechConfFI
Yleistä Avoimuus Open Source ja tuki yleisesti käytetyille ei-ms työkaluille Kaikki alustat tuettuna:.net 5 Core, Universal Apps, Xamarin Kieli kehittyy ja Roslyn mahdollistaa paremmat työkalut ja kirjastojen tuen Visual Studio 2015, paljon käyttöä helpottavia piirteitä.net 4.6 ei sisällä mitään maailmaa mullistavia uudistuksia 2
.NET 2015 3
.NET Framework 4.6.NET Framework 4.6.NET Framework 4.NET Framework 4.5.NET Framework 4.5.1.NET Framework 4.5.2
. NET Compiler Platform ( Roslyn ) # TechConfFI
Universal Windows Platform Universal Windows Platform # TechConfFI.NET Native highlights
.NET and Xamarin Share app logic across platforms Native UI Native UI Native UI C# + XIB C# + AXML C# + XAML 100% APIs exposed Xamarin.NET Core
UI: Visual Studio/Xamarin # TechConfFI ios app designer in Visual Studio Android app designer in Visual Studio
Visual Studio 2015 Uusia ominaisuuksia Kevyt versio Code Tech Conference 2015
Uusia/muuttuneita ominaisuuksia Kosketusnäyttötuki skrollaus zoomaus valinta, rivi vasemmasta marginaalista ja sana tuplanapautuksella context-valikko pitkällä painalluksella Tärkein näppäinyhdistelmä edelleen Ctrl+. toki lisää toimintoja verrattuna edelliseen versioon 10
Editorista automaattinen sulkujen lopetus rivien siirto Alt+nuolinäppäimet Useimmat Productivity PowerToolsin toiminnoista vakiona mukana 11
Light Bulbs yms Rename muutettu visuaalisemmaksi ja kätevämmäksi Editori näyttää harmaalla turhia osia, esimerkiksi käyttämättömät using-lauseet tai turhat this-tarkenteet koodimuutokset voidaan tehdä tiedostoon, projektiin tai solutioniin, demo vaikka using-määreillä korjaustoimintojen herätys Ctrl+. tai koodin maalaus ja sitten Ctrl+. 12
Ikkunointi Ikkunoiden toiminnallisuus ei juurikaan ole muuttunut Uutta Window-valikossa Layout toiminnot joilla saa helposti erikokoisille näytöille tehtyä asetukset Save Layout Apply Layout Manage Layout Reset Window Layout // tämä on siis se vanha toiminto 13
Nuget Nuget Package Manager on kokonaan uusi selvempi helpompi voi valita listalta asennettavan paketin version joka aikaisemmin oli olemassa vain Package Manager Console:n kautta 14
WPF ja XAML Tech Conference 2015
WPF ja XAML integraatiota Blendin kanssa parannettu suorituskykyä ja High DPI-tukea parannettu XAML: Peek Definition koodille Region-määrittely WPF: Live Visual Tree Live Property Editor 16
Debuggaus Tech Conference 2015
Uusia ominaisuuksia BreakPointin lisäasetukset helpompi käyttää, sama toiminnallisuus kuin aikaisemmin mutta UI on uusittu Askellettaessa näyttää kuinka kauan edellisen toiminnon suoritus kesti Json Visualizer Immediate-ikkunassa voi käyttää lambda-lausekkeita 18
C# 6 Tech Conference 2015
C# Auto-property, alustus ja readonly Static-luokan using Luokan metodit Lambda-lausekkeina Nameof, refaktorointiturvallinen nimenselvitys Elvis-operaattori (null-conditional operator) String interpolaatio, helppo String.Format Poikkeusfiltterit ja await catch- ja finally lohkoissa Kokoelmaluokkien alustus 20
Automaattipropertyt public string Nimi { get; } // read-only property // saa käyttää konstruktorissa // myös alkuarvon asettaminen mahdollista public int Indeksi { get; } = -1; // alustus kuten kentillä // konstruktorissa tehty asetus ajaa alkuarvon yli public string Nimi { get; set; } = oletusarvo ; 21
static luokkien using using static System.Diagnostics.Trace; // luokka, ei nimiavaruus // koodissa: WriteLine( tulostus OK ); // ei tarvitse Trace-luokkaa alkuun 22
Metodit ja lambda public decimal LaskeHinta() { } return Hinta * ALVProsentti; // nyt kirjoitetaan: public decimal LaskeHinta() => Hinta * ALVProsentti; // ei voi olla lohkosulkuja vain lyhyet metodit! 23
NameOf Tilaus tilaus = new Tilaus(); string nimi = nameof(tilaus); // nimi == tilaus nimi = nameof(tuote); // nimi == Tuote nimi = nameof(tilaus.toimitusosoite); // nimi == ToimitusOsoite 24
Elvis-operaattori (null-conditional operator) //lyhentää koodia missä on null-tarkistuksia string osoite = ; if (tilaus!= null && tilaus.toimitusosoite!= null && tilaus.toimitusosoite.postitoimipaikka!= null) { osoite = tilaus.toimitusosoite.postitoimipaikka.toupper(); } // ja sama lyhyemmin: osoite = tilaus?.toimitusosoite?.postitoimipaikka?.toupper(); // myös taulukot ja delegaatit Tuote t1 = tuotteet?[0]; 25
string-interpolatio string s = Nimi +, Hinta: + Hinta.ToString(); s = string.format( {0}, Hinta: {1}, Nimi, Hinta); s = $ {Nimi}, Hinta: {Hinta} ; // tämä lienee näistä helpoin 26
Poikkeuksista try { // koodia } catch (ArgumentException ex) when (ex.message.contains( demo )) { // } finally { await SuljeYhteydetAsync(); } 27
Kokoelmien alustus Dictionary<string, Tuote> tuotteet = new Dictionary<string, Tuote>() { [ eka ] = new Tuote(1), [ toka ] = new Tuote(2), [ viimeinen ] = new Tuote(33) }; 28
.NET 4.6 Tech Conference 2015
Uusia piirteitä Universal Apps Cross-platform Apps ASP.NET 5, modulaarinen versio jossa sovellukseen otetaan vain tarvittavat ominaisuudet mukaan MVC 6 == VS2015 + MVC + Web API + Web Pages 30
Muutoksia ASP.NET, HTTP2-tuki Windows Forms-kontroleille High DPI tuki, renderöityvät paremmin tarkoilla näytöillä Compatibility Switches Suorituskyky parempi, esim 64-bit JIT kääntäjä ja muistinhallinnan toiminnot 31
Compatibility Switches // käyttävä sovellus: AppContext.SetSwitch("Switch.Apu.UusiOminaisuusPäällä", true); // kirjasto: public string Testi1() { bool uusitoiminto; AppContext.TryGetSwitch( Switch.Apu.UusiOminaisuusPäällä", out uusitoiminto)); if (uusitoiminto){ return "uusi"; } else { return "vanha"; } } 32
Tech Conference 28.-29.5.2015 Kiitos osallistujille! Heikki Raatikainen heikki.raatikainen@sovelto.fi # TechConfFI