Visual Studio 2017: aggiornate tutti i pacchetti NuGet alla versione corrente

Ci sono diverse casistiche in cui abbiamo la necessità di reinstallare la stessa versione dei pacchetti di NuGet di una solution.
Prima fra tutti è il caso in cui scarichiamo per la prima volta il progetto da Visual Studio Team Service e in cui i pacchetti NuGet (ovviamente) non siano stati caricati insieme al progetto.
Altre volte invece può capitare che sia siano rotte le reference oppure, come succede a me ultimamente, dobbiamo copiare il file packages.config da un progetto a un altro.
Questo io lo sto facendo, ad esempio, perchè sto realizzando progetti molti simili in cui è richiesta una certa versione specifica per alcune librerie per far funzionare la solution.
Se in questi casi, lanciamo il seguente comando:

Update-Package

oppure con i comandi da interfaccia, i pacchetti vengono aggiornati all'ultima versione disponibile.

Se invece dal menu Tools - NuGet Package Manager - Package Manager Console apriamo la console di NuGet e scriviamo il comando:

Update-Package  –reinstall

i pacchetti verrano aggiornati alla versione specificata all'interno del file package.config.

SharePoint Saturday Milano 30 Settembre 2017: agenda e altre informazioni

Torna a Milano uno degli eventi più importanti su SharePoint e Office 365: lo SharePoint Saturday.
Direttamente nella nuova casa di Microsoft, il 30 settembre, ne vedremo delle belle. :)

Come sempre ci ha abituato questo format, speaker che arrivano un po' da tutto il mondo oltre a noi SharePoint Fighters italiani.
Quest'anno avrò l'onore di alternarmi sul palco con Peppe, Fabio, Igor, Paolo e Riccardo.

Potete iscrivervi direttamente da questo link e vi consiglio di affrettarvi perchè i posti stanno per esaurire.
A dimostrazione del fatto che lo SharePoint Saturday è garanzia di buoni contenuti, sia per sviluppatori che per IT Pro.

Potete trovare l'agenda completa della giornata a questo link.
Io parlerò sia alle 12:00 per presentare il prodotto a cui sto lavorando in questo periodo con 4ward.
Poi alle 16:15 avrò una sessione molto più tecnica in cui vi parlerò di come realizzare con ASP.NET e Azure un servizio che va a interagire con le Graph API del vostro Tenant, con la possibilità di accedere alle informazioni di SharePoint, Calendari, Email, Tasks e tanto altro.
Vi andrò a svelare alcuni "segreti" che si celano dietro al nostro prodotto e soprattutto agli ultimi sviluppi che stiamo realizzando per realizzazione di un bot all'interno di SharePoint online e Microsoft Teams.

Dopo le sessioni ovviamente appuntamento tutto insieme per bene una birra e parlare di tecnologia.

Se avete qualche domanda o argomento da approfondire durante la sessione, scrivetemi pure. Non siate timidi. :)
I miei riferimenti li trovate su http://about.emanuelebartolesi.com

Buon lavoro a tutti!

Rilasciato un aggiornamento di ReSharper con supporto a .NET 2.0

Buone notizie per chi usa il tool di JetBrains ReSharper.
Da poco infatti è stato rilasciato un aggiornamento che supporta a pieno la nuova release di .NET Core.
Prima di installare comunque l'aggiornamento di ReSharper, dovete aver installato l'aggiornamento di Visual Studio e quindi avere la versione 15.3.
Con questo aggiornamento, ReSharper, aggiunge il completo supporto a .NET Core 2.0 e di conseguenza tutti gli strumenti a cui eravamo già abituati negli altri progetti e cioè il code inspection, la navigations e il refactoring.
Completo supporto anche per le nuove ASP.NET Core Razor Pages.

Per gli amanti del frontend, sono state anche migliorate le performance e il supporto per quanto riguarda TypeScript, JavaScript, Json e sopratutto Angular.

Visual Studio: lanciare diversi browser contemporaneamente

Quando si lavora sul web, per forza di cose, dobbiamo testare la nostra applicazione su almeno tre o quattro browser diversi.
Visual Studio anche in questo caso ci viene incontro e ci semplifica la vita, già difficile per noi "sviluppatori di pagine HTML".

Una volta aperto un progetto Web in Visual Studio, nella barra in alto potete selezionare la voce "Browse With" cliccando sulla freccia accanto al menu di debug con scritto il nome del vostro browser predefinito (di norma Internet Explorer).
A questo punto nella schermata nuova che vi apparirà, tenendo premuto il pulsante Ctrl, potete andare a selezionare con il mouse i diversi browser che volete lanciare di default.
Fatto questo, dovete cliccare su "Set as Default" che si trova sulla destra della schermata.

Chiusa questa finestra, il menu sulla barra a questo punto cambierà e al posto del nome del browser, troverete la scritta "Multiple Browsers".

 

Adesso, premendo Ctrl + F5, la vostra applicazione verrà lanciata simultaneamente in tutti i vostri browser contemporaneamente.
Purtroppo non è possibile lanciare una sessione di debug con più di un browser aperto, ma intanto accontentiamoci di questa opzione.
Il risultato ottenuto, comunque, sarà simile a quello dello screenshot qua sotto.

Buon degug.

Microsoft MVP per la quarta volta consecutiva!

E' sempre un'emozione incredibile ogni anno ricevere la mail il giorno del rinnovo.
Come ho scritto nel titolo del posto, quest'anno è stata la quarta volta che sono stato rinnovato e come lo scorso anno, nella categoria "Visual Studio and Development Technologies".
Gli ultimi mesi prima del rinnovo è stato un periodo difficile per me a livello personale, ma con questa notizia mi è tornata la voglia di fare di nuovo attività di community come prima e forse anche di più.
Ho già steso il piano di eventi a cui vorrei partecipare ed organizzare da settembre in avanti.
Preso leggerete la prima notizia relativa a questo argomento in uno dei prossimi post. :)

Grazie a tutti e ci vediamo al prossimo evento!

Global Azure Bootcamp - Pordenone 2017

Il 22 aprile a Pordenone si terrà uno dei più importanti eventi su Azure in Italia.
Anche questa volta 1nn0va mi ha invitato come speaker :)

Durante la mia sessione vedremo come sfruttare al meglio ASP.NET Core e alcuni servizi Azure fra cui:

  • Resource Group
  • App Service
  • SQL Azure
  • Traffic Manager

Scenderemo nel dettaglio di come creare un ambiente di produzione ridondato e deployato su diversi datacenter in modo da ottimizzare l'accesso da qualsiasi paese arrivi l'utente finale.
Oltre a questo vedremo anche come gli app service possono aiutare a creare diversi ambienti di test e sviluppo, senza troppi costi aggiuntivi e soprattutto senza troppo spreco di tempo.

Potete trovare l'agenda completa (la riporto anche sotto) alla pagina di Eventbrite dedicata all'evento, in cui potete anche prendere il biglietto: https://www.eventbrite.it/e/biglietti-global-azure-bootcamp-pordenone-2017-32810793968

Sbrigatevi perchè stanno andando a ruba!
Ci vediamo a Pordenone!

Aula S1

8.15

Registrazione

9.10

Saluti

9.30

Keynote: Digital Transformation: Resetting Your Defaults for the Modern World
(Andrea Benedetti)

10.30

Coffee Break

 

Aula S1
(App Deployment)

Aula S7
(VM And Data)

Aula S8
(Serverless)

11.00

Azure Container Services
(Alessandro Melchiori)

Azure Data Lake
(Francesco Diaz)
Azure IoT Hub
(Andrea Tosato, Simone Penna

12.10

Infrastrucutre as code: Kubernetes on ACS
(Maksim Sinik)

Azure DocumentDb
(Emanuele Zanchettin
Microsoft Cognitive Services
(Riccardo Cappello)

13.10

Lunch time

14.00

Deploy & Run on Azure App Service
(Andrea Dottor

Azure Virtual Machine & Networking
(Marco GuminiGiampiero Cosainz)

Serverless development
with Azure Functions
(Marco Parenzan)

15.15

ASP.NET Core & Azure in the Real World
(Emanuele Bartolesi)

Gestione dei servizi Azure con Monitor e OMS
(Marco GuminiMichele Ruberti)

Create your smart bots in Azure
(Jessica Tibaldi)

16.25

Azure AppInsight
(Grazia Cimino)

 Will you survive the titanic? A full story with Azure Machine Learning
(Guenda Sciancalepore)

Microsoft Cognitive Services
(Marco Minerva)

17.35

Chiusura

Visual Studio Code: scrivere un extension pack

Qualche mese fa avevo scritto un articolo, che ho aggiornato nel tempo, con le estensioni più utili per Visual Studio Code.
Dalle ultime versioni di Visual Studio Code è stata aggiunta la possibilità di aggiungere delle estensioni denominate "Template Pack" che in realtà sono delle raccolte di estensioni stesse.
In questo modo non dobbiamo installarle tutte una ad una, ma è possibile farlo con un passaggio unico.

Vediamo come fare per creare un Template Pack personalizzato.

Installare Yeoman

Per chi non sapesse cosa sia, Yeoman, in breve, è un generatore di codice da riga di comando che vi permette di creare nuovi progetti a partire da dei template.
Se non lo avete ancora installato sulla vostra macchina, dovete installarlo e installare anche il template per creare progetti per Visual Studio Code.
L'installazione è molto semplice.
Dovete aprire una finestra del command prompt, o una finestra di PowerShell o un terminale di vostro piacemento (anche su Mac e Linux) e inserire il seguente comando:

npm install --global yo

Per controllare che sia tutto a posto una volta che ha finito l'installazione, potete utilizzare il seguente comando:

yo --version

Installare in generatore di Code

Una volta installato Yeoman, bisogna installare il template per Visual Studio Code.
Per farlo, basta lanciare il seguente comando:

npm install -g yo generator-code

Creare l'Extension Pack

A questo punto, non dobbiamo altro che lanciare Yeoman con il rispettivo generatore per Visual Studio Code:

yo code

Nel vari template che si presenteranno, selezionate l'ultimo: New Extension Pack.

Adesso Yeoman vi farà alcune domande, tra cui se volete già aggiungere al vostro template, le estensioni correntemente installate nel vostro Visual Studio Code, il nome della vostra estensione e il vostro publisher name (cioè quello che gli altri utenti vedranno sul marketplate).
Fatto questo, potete lanciare il seguente comando per aprire il vostro progetto direttamente in Visual Studio Code:

cd <nome della vostra estensione>
code .

Personalizzare la vostra estensione

Una volta aperto Visual Studio Code, potete aprire il file package.json e iniziare a inserire i pacchetti che volete includere nella vostra estensioni.
C'è un tag apposito dove inserire i nomi, ricordandosi di inserirli nel formato "publisherid.extensionname".
Nell'esempio di codice, trovate alcuni dei pacchetti che ho inserito nella mia estensione:

    "extensionDependencies": [ 
        "abusaidm.html-snippets",
        "Zignd.html-css-class-completion",
        "qinjia.view-in-browser",
        "msjsdiag.debugger-for-chrome",
        "dbaeumer.vscode-eslint",
        "donjayamanne.jquerysnippets",
        "donjayamanne.githistory",
        "HookyQR.beautify",
        "joelday.docthis",
        "JerryHong.autofilename",
        "eamodio.gitlens"
    ]

Pubblicare l'estensione sul Marketplace

Una volta creata la vostra estensione, potete decidere di pubblicarla sul marketplace di Visual Studio oppure di testarla in locale.
Nella seconda ipotesi basta copiare i files che avete creato con Yeoman dentro la cartella %USERPROFILE%\.vscode\extensions e riavviare Visual Studio Code.
Per Linux e per Mac, la cartella dove inserire l'estensione è la seguente: ~/.vscode/extensions.

Se invece volete pubblicare la vostra estensione sul Marketplace, la procedura è un po' più lunga.

Per prima cosa dovete installare l'utility da riga di comando che si chiama vsce:

npm install -g vsce

Finita l'installazione dovete andare nel vostro tenant di Visual Studio Team Services al link: vostrotenant.visualstudio.com.
Una volta effettuato il login dovete cliccare sul vostro avatar e dopo sul link "Security".

A questo punto dovete cliccare sul pulsante "Add" sopra la griglia con la lista dei vostri "Personal Access Token" e crearne uno nuovo.

N.B. un vincolo molto importante per il corretto funzionamento è quello di selezionare in "Accounts" la voce "All Accessible Accounts".

Salvatevi il vostro token perchè servirà successivamente e soprattutto non potete più recuperarlo dalla griglia con la lista.
Adesso dovete creare il vostro publisher name con il seguente comando:

vsce create-publisher publisher_name

In questa fase il tool vi chiederà di inserire il Personal Access Token che avete creato in precedenza.
Adesso dovete aprire il file "package.json" e inserire alla voce "publishername" del json, quello che avete inserito in questa fase.
Effettuate il login con il comando:

vsce login publisher_name

Se avevate già creato il publisher name in precedenza e non avevate ancora effettuato il login nella stessa sessione, vi verrà chiesto di nuovo il Personal Access Token.

Adesso non vi rimane che spostarvi nella cartella del vostro progetto e lanciare i comandi di pubblicazione del vostro pacchetto.
I comandi per farlo sono:

vsce publish minor
vsce publish major
vsce publish patch

Facendo in questo modo, il vostro file "package.json" viene aggiornato automaticamente con il numero di versione corretto, quindi non dovete farlo a mano.

Per controllare che sia tutto andato a buon fine, potete andare a link della vostra estensione, che avrà il seguente formato: https://marketplace.visualstudio.com/items?itemName=publishername.nomepacchetto

Visual Studio 2017 Succinctly

Qualche giorno fa il mitico Alessandro Del Sole ha pubblicato un nuovo libro per Syncfusion: Visual Studio 2017 Succinctly

In questa introduzione a Visual Studio 2017 vengono descritte le principali novità dell'ambiente di sviluppo a partire dalla nuova installazione fatta a "moduli", alle novità dell'IDE vero e proprio, una panoramica su Roslyn fino alla parte riguardante lo sviluppo per il cloud e Web.
Come tutti gli altri libri di questa serie, lo potete scaricare gratuitamente dal link che vi ho lasciato sopra.

Buona lettura. :)

Vedere e scaricare le sessioni sul lancio di Visual Studio 2017

Come avevo scritto nell'articolo precedente, qualche giorno fa c'è stato il lancio di Visual Studio 2017.
Ovviamente le sessioni sono state registrate e rese disponibili su Channel9 a questo indirizzo: https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch?sort=status&direction=desc

Nella stessa serie sono state anche inserite le sessioni dei giorni successivi sullo sviluppo Windows/Xamarin e quelle orientate al Web.

Per chi fosse interessato a scaricarsi le puntate e guardarle offline, ho creato (come tante altre volte ormai!!!) uno script PowerShell per fare il download in automatico di tutto.
Lo potete trovare a questo link su gist: https://gist.github.com/kasuken/f93408e8820d2c276199b9514f950374

[UPDATE] Ho inserito anche il download delle slides!!!  [/UPDATE]

$downloadDir = "~\Desktop\VS2017Launch"
mkdir $downloadDir
Set-Location $downloadDir
[Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
$r = ([xml](new-object net.webclient).downloadstring("https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/RSS/mp4high"))
$r.rss.channel.item | ForEach-Object{
    Set-Location $downloadDir  
    $url = New-Object System.Uri($_.enclosure.url)
    $title = $_.title.trim().Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")

    $videodir = $title

    $file = $title + " - " + $_.creator
    $file = $file.substring(0, [System.Math]::Min(120, $file.Length))
    $file = $file.trim()
	
    if (!(test-path "$downloadDir\$videodir\$file.txt")) {
        mkdir $videodir
        Set-Location "$downloadDir\$videodir\"
        $OutFile = New-Item -type file "$file.txt" -Force  
        $Content = ""
        $Content = $_.title.trim() + "`r`n" + $_.summary.trim()
        add-content $OutFile $Content
    }
	
    if (!(test-path "$downloadDir\$videodir\$file.mp4")) {
        "Downloading: " + $file + ".mp4"
        $wc = (New-Object System.Net.WebClient)  
        $wc.DownloadFile($url, "$file.mp4")
        Move-Item "$downloadDir\$file.mp4" "$downloadDir\$videodir\"
    }
}

$s = ([xml](new-object net.webclient).downloadstring("https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/RSS/slides"))
$s.rss.channel.item | ForEach-Object{
    Set-Location $downloadDir  
    $url = New-Object System.Uri($_.enclosure.url)
    $title = $_.title.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")

    $videodir = $title

    $file = $title + " - " + $_.creator
    $file = $file.substring(0, [System.Math]::Min(120, $file.Length))
    $file = $file.trim()
	
    if (!(test-path "$downloadDir\$videodir\$file.pptx")) {
        "Downloading: " + $file + ".pptx"
        $wc = (New-Object System.Net.WebClient)  
        $wc.DownloadFile($url, "$file.pptx")
        Move-Item "$downloadDir\$file.pptx" "$downloadDir\$videodir\"
    }
}

 

Lancio Visual Studio 2017 e Virtual Training Web

Oggi alle 17 partirà in diretta lo streaming del lancio di Visual Studio 2017, che potrete seguire da qui: https://launch.visualstudio.com/

L'agenda è ricca e ci saranno speaker come Julia Liuson, Brian Harry, Miguel de Icaza e Scott Hanselman.
Vi inserisco qua sotto lo screenshoot dell'agenda.

Se non riuscite a seguirlo in diretta, sicuramente verrà registrato e inserito su Channel 9 a breve.

Altro evento molto interessante è quello del giorno dopo, sempre in diretta ma su MVA: https://mva.microsoft.com/liveevents/visual-studio-2017-launch-and-20th-anniversary-event-web-development
In questo streaming verranno affrontati alcuni argomenti in comune con quelli del giorno precedente ma verrà fatta una full immersion sulla parte prettamente web.
L'agenda sembra molto interessante e le novità, se non le avete già viste nella RC, saranno tante.

  • 8–9am “What’s new for developers in Visual Studio 2017”
  • 9–10am “Getting Started with ASP.NET Core in Visual Studio 2017”
  • 10–11am “Exploring and migrating to TypeScript”
  • 11–12pm “Building web apps powered by Angular 2.x using Visual Studio 2017”
  • 12–1pm “Create awesome bots, connectors, and tabs in Microsoft Teams”
  • 1–2pm “DevOps from the Azure Portal”
  • 2–3pm “Top 10 Entity Framework features every developer should know”
  • 3–4pm “Getting started with DocumentDB, plus demos with .NET & Node.js”