Technology Experience

Mese: Novembre 2018

.NET World

VS2017 : Close All But Tool Windows

Con il rilascio di Visual Studio 2017 version 15.9 è comparsa una nuova voce di menù in Visual Studio 2017, posizionata sotto il menù Window.

Si va ad affiancare alla già nota Close All Documents.

Mentre la Close All Documents chiude indiscriminatamente tutti i tab aperti, senza farsi troppe domande, la Close All But Tool Windows chiude tutti i tab aperti (quindi ogni tipo di file sorgente .cs, .xaml, .css, .ts e via dicendo) lasciando però aperti eventuali tab contenenti strumenti di Visual Studio. Ad esempio:

  • Find and Replace, che utilizzo molto
  • Test Results
  • JSON Outline
  • Web Browser (c’è qualcuno che lo usa?)
  • Diagnostics Tools

Più in generale, tutti quei tool e pannelli che si aprono dai menù tradizionali di Visual Studio.
Comodo?

Send to Kindle
.NET World

Visual Studio 2017 15.9.2 – Export / Import configuration

Premessa
Se avete a che fare con un’installazione piuttosto corposa/complessa di Visual Studio 2017, che comprende cioè un gran numero di linguaggi, framework, strumenti, emulatori, etc. etc. probabilmente andate un po’ in panico quando lo dovete installare su una macchina nuova (o magari quando reinstallate il vostro PC). I casi sono due:

  1. andate per intuito
  2. o – come me – utilizzate un documento RTF di qualche tipo, che gestite nel tempo, che vi elenca esattamente tutti i componenti di cui avete bisogno

Quindi, lanciate l’installer di Visual Studio 2017, andate prima nella sezione Workloads e selezionate “a grandi linee”, poi vi spostate nella sezione Individual Components e selezionate in modo più preciso e puntuali tutto ciò che vi occorre. Che andiate ad intuito oppure seguendo una checklist, poco cambia.

La novità di Visual Studio 2017 – Release 15.9
Con l’ultimo rilascio di Visual Studio 2017 c’è una novità. E’ possibile esportare in un file .vsconfig la configurazione attuale dei componenti del vostro VS2017, allo scopo di poterla importare in un altro installer. Questo semplifica di molto le operazioni per un nuovo setup, evitando di dover selezionare a mano, di sbagliarsi in qualche modo, etc. etc.

L’operazione di export di per sè è praticamente immediata. Il file .vsconfig è sostanzialmente un file in formato json che contiene l’elenco di tutti i package della configurazione corrente. Lo esportate da una parte, lo importate successivamente sullo stesso o su un altro PCe vi troverete tutto quanto già selezionato senza troppe complicazioni. Bene così.

Send to Kindle
.NET World

Evitare l’autoscroll della ListBox in WPF

La settimana scorsa ho notato un comportamento standard della ListBox di WPF, che ho sempre accettato in realtà senza rendermene conto, ma che nell’applicazione che stiamo sviluppando non andava troppo bene. In pratica, la ListBox compie uno scroll automatico quando viene selezionato un elemento parzialmente visibile, allo scopo di farlo vedere completamente all’utente. Guardate il video qua sotto.

All’inizio del video, per esempio, viene cliccato e selezionato il numero 6. Trattandosi di un elemento parzialmente renderizzato, e quindi parzialmente visibile, cosa succede? Che WPF fa scorrere la ListBox verso l’alto per fare in modo che l’utente possa vedere l’intero item. La stessa cosa accade poco dopo con il numero 4094, e dopo ancora con il 4125.

Si può evitare questa cosa? Certo che sì.

Si tratta di intercettare l’evento RequestBringToView, che la ListBox scatena proprio nei casi citati sopra. By default, allo scatenarsi di quell’evento (ed in realtà anche di altri, come il GotFocus) la ListBox chiama automaticamente il metodo BringToView(), proprio per portare in visibilità l’elemento selezionato. Il gioco sta nel bloccare questo comportamento predefinito, in questo modo.

1
2
3
4
5
6
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="RequestBringIntoView"
Handler="ListBoxItem_RequestBringIntoView" />
</Style>
</ListBox.ItemContainerStyle>

In pratica grazie ad un piccolo snippet XAML si va ad intercettare l’evento RequestBringToView, facendo eseguire una riga di codice C# che va marcare l’evento come gestito, evitando il normale comportamento della ListBox.

1
2
3
4
5
private void ListBoxItem_RequestBringIntoView
(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}

Questa piccola implementazione vale per ListBox, ListView, GridView, etc. etc.

Send to Kindle
My personal life

Sandro Tonali, ovvero: scoprire il proprio talento per vivere meglio

Penso che una delle migliore cose che possano capitare ad una persona sia quella di scoprire, fin da piccoli, il proprio talento. Facendo qualche veloce ricerca sul web, si trovano diverse definizioni della parola “talento”. Qualche esempio:

Capacità intellettuale non comune associata a genialità o estro vivace.

Dote, specialmente in quanto propensione a qualcosa, capacità in un’attività, in un settore.

Ingegno, predisposizione, capacità e doti intellettuali rilevanti, specialmente in quanto naturali e intese a particolari attività.

Mentre, tratto da questa pagina, trovo…

Il talento è dote. Se ne è naturalmente provvisti, e se non c’è non si può imparare – inclinazione troppo più profonda di una capacità, troppo più radicata di una passione, troppo più caratterizzante di un volto o di una maniera, per poter essere riprodotta o finta. È un taglio del sé.

Aggiungo del mio: avere un talento per una certa attività non significa di per sé che la faresti sempre ad ogni ora del giorno e della notte, è semplicemente quella cosa che ti esce istintiva, con il minimo sforzo, mentre magari vedi gli altri che per raggiungere lo stesso obiettivo arrancano. Il talento si palesa con un’intuizione naturale che hai innata dentro, ma che comunque richiede studio & dedizione costanti nel tempo per tutti i perfezionamenti del caso che faranno di te un professionista completo.

Io penso di averlo nel mio lavoro, così come tanti altri ce l’hanno nel loro. E probabilmente anche mio cugino, Sandro Tonali, ce l’ha nel suo. Visto che quando era piccino giocava a calcio virtuale sulla Playstation, poi è cresciuto ed ha cominciato a giocare veramente a pallone, fino a raggiungere il calcio giocato, quello vero, nella serie B con il Brescia.

Ed in questi giorni è stato convocato da Roberto Mancini con la nazionale maggiore, per giocare un’amichevole contro gli Stati Uniti il 20 Novembre, accanto a gente come Chiellini, Bonucci, Verratti, Insigne, Immobile e via dicendo. Paura vera.

Mi capita sempre più spesso di vederlo in TV, intervistato o sul campo da gioco, e devo dire che sono proprio felice per lui. Perchè a 18 anni probabilmente ha già capito da un po’ qual è il suo talento, e probabilmente è circondato dalle persone giuste capaci di farglielo fruttare come si deve. Bravo a lui, alla sua famiglia più vicina, e chiunque sta contribuendo al suo successo!

Buona fortuna, cugino!

Send to Kindle
.NET World

“Get Latest Version” da command line: assicurarsi di usare il tf.exe corretto

Per voi che, lavorando seriamente, utilizzate TFS come source control, vi potrebbe tornare utile sapere che è possibile effettuare tutta una serie di operazioni dalla command-line, sia essa il classico command prompt del DOS, piuttosto che PowerShell. A quale scopo? Per automatizzarle, per esempio, perchè per certi versi è più comodo fare doppio click su uno script già bello pronto, piuttosto che aprire Visual Studio, raggiungere il Source Control Explorer, e poi cliccare dal menù contestuale la voce Get Latest Version (GLV).

Vi rimando a questa pagina per maggiori informazioni.

E’ possibile fare davvero di tutto: gestire check-out e check-in, ottenere informazioni sul proprio workspace, gestire i branch, aggiungere/rimuovere nuovi file o cartelle, consultare i pending changes, e molto altro ancora.

Quella che serviva a me, per velocizzarmi il lavoro, è quello di effettuare il GLV. Ci sono diverse sintassi per farlo; quella che utilizzo io è forse la più semplice:

CD C:TFSNomeAppNomeBranch
%ExeTf% get "$/Nomeapp/NomeBranch" /recursive

E’ possibile aggiungere il parametro “/preview” per simulare un GLV senza però sovrascrivere le cartelle ed i file del proprio workspace locale.

Sappiate che potreste incappare in un errore di esecuzione che tra le altre cose dice: “Unable to determine the workspace using TF.exe“. E’ segnalato in tantissime pagine sul web, compresa questa su StackOverflow. Troverete tantissime soluzioni; forse l’errore più comune e frequente è che TF.exe va eseguito da una cartella già mappata nei percorsi locali di TFS. Ecco il motivo per cui io nel mio script ho inserito un comando CD prima di eseguirlo. In più bisogna assicurarsi di usare i parametri giusti nello script che riportano username, password (oppure un utente di dominio), e così via.

Nel mio caso la questione era ancora più subdola. Sul mio HD il file TF.exe è presente in più copie, forse una per ciascuna versione di Visual Studio installata.

Il primo si trova qui: “C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorer”. Un secondo invece si trova in “C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDE”.

E’ assolutamente necessario lanciare il TF.exe corretto, altrimenti continuerete a ricevere lo stesso errore.

Se utilizzate Visual Studio 2017 Enterprise Edition, insomma, va lanciato il primo. Tornando allo script iniziale, ho banalmente valorizzato la variabile %ExeTf% come “C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorer f.exe” ed il gioco è fatto.

Send to Kindle
.NET World

Godere della Windows Timeline sotto Android

Una delle feature che mi capita di utilizzare con Windows 10 (non così spesso, ma quando ne ho bisogno diventa vitale) è la Timeline, ciò quella funzionalità che traccia e salva sul cloud (ebbene sì) le attività che fate su documenti e pagine web, in modo che se switchate da un PC all’altro…siete in grado di recuperare i link, le pagine visitate ed i documenti aperti da OneDrive. Quindi immaginatevi di aprire dal vostro account documenti Excel oppure Word, scansioni in PDF, immagini, qualsiasi file…Timeline se lo ricorda.

Maggiori informazioni sulla Windows Timeline le trovate qui.

Questa cosa funziona su tutti i PC Windows sui quali accedete con lo stesso Microsoft Account, ovviamente, ma non solo. Se avete un telefono Android ed installate il Microsoft Launcher, come ho fatto io, potete raggiungere la Timeline anche sotto Android.

Qui sopra potete vedere una schermata tratta dal mio smartphone personale, un Asus Zenfone 4 Max, su cui ho installato il Microsoft Launcher. Quelle che vedete qui sopra sono le ricerche del 27 ottobre scorso fatte con Edge, che uso come browser principale. Qui sopra non le vedete, ma la Timeline vi mostrerebbe anche voci relative a fogli Excel, il tutto raggruppato per giorni, ore, domini visitati, etc. etc.

L’app Microsoft Launcher pubblicata sul Play Store aggiunge altre funzionalità al vostro telefono Android: la gestione degli sfondi, degli widget, delle pagine e delle gesture. Prevede anche un menù contestuale per ogni tile, così che possiate per esempio disinstallare le app in modo rapido e con un look’n’feel simile al caro Windows.

Send to Kindle