Visual Studio e debug in rete

Durante la fase di test di un’applicazione può essere utile accedere a IIS Express da remoto. Normalmente quando viene eseguito il debug da visual studio, IIS Express è eseguito come http://localhost:80, quindi con il binding sulla porta 80 di localhost
Da qualsiasi altro client di rete (ma anche da internet in caso di NAT), il debug non è possibile. E’ possibile configurare il binding di IIS, modificandone il file di configurazione
Nella directory della soluzione .NET troviamo la cartella nascosta denominata .vs .
Al suo interno, un’altra cartella denominata config 
La configurazione di IIS Express viene fatta utilizzando il file applicationhost.config.
E’ sufficiente ricercare la configurazione legata al binding modificando l’attributo “bindingInformation” da ‘localhost‘ a ‘*‘. In questo modo, IIS Express effettuerà il binding su tutte le interfacce di rete presenti sul nostro dispositivo.

Binding


A questo è necessario abilitare l’accesso all’url, tramite powershell:

  • aprire un terminale powershell (eseguito come amministratore)
  •  eseguire il comando: 

netsh http add urlacl url=http://*:18460/ user=everyone

Per l’accesso da altri pc della rete è necessario configurare il firewall del pc utilizzato per il debug, garantendo l’accesso alla porta impostata al passaggio precedente. A questo punto qualsiasi pc della rete potrà accedere alla webapplication in running e sarà possibile debuggarne gli steps.

VS2017 – Caricamento parallelo dei progetti

Con il rilascio della versione 15.6 di Visual Studio 2017 è stato introdotto il Parallel Project Load, che consente di migliorare sensibilmente la velocità di caricamento delle soluzioni composte da molti progetti. Il nuovo modello di caricamento sfrutta le migliorie introdotte nella versione 15.5 con l’obiettivo di migliorare la generazione dei dati di Intellisense, parallelizzando le fasi di build  a design-time. Questa miglioria consente di velocizzare l’apertura delle soluzioni sfruttando il modello di esecuzione parallelo, soprattutto quando non sono state aperte in precedenza. Intellisense, inoltre, utilizza una sistema interno di cache che non richiede l’intera rigenerazione durante le aperture successive.

Continua a leggere VS2017 – Caricamento parallelo dei progetti

Novità in C# 7.2

Dopo il rilascio di C# 7.1, è stato pubblicato l’aggiornamento C# 7.2 che porta con se alcune modifiche abbastanza significative alla major release 7.0. Nel seguito di questo articolo analizzeremo le più importanti.

Digital separator after base specifier

Una delle principali novità introdotte in C# 7.0 è la possibilità di definire il separatore numerico attraverso il simbolo _ (underscore). Questa nuova sintassi consente di rendere più leggibile il codice quando si ha a che fare con numeri e formati. Inoltre consente di rappresentare in modo più semplice numeri di grande dimensione. Ad esempio, il seguente codice

consente di rappresentare rispettivamente un numero decimale, un numero esadecimale e un numero binario. Da notare che il formato è rappresentato dal prefisso del numero, ovvero 1, 0x e 0b.

In C# 7.2 è possibile posizionare il carattere underscore dopo la definizione del tipo. Il codice precedente può essere rappresentato nel modo seguente:

Non-trailing Named Arguments

C# dalla versione 4.0 è stato il primo linguaggio di programmazione a permettere il passaggio di parametri, con nome, ai metodi. Questo tipo di approccio consente di utilizzare parametri opzionali, facendo in modo che il compilatore non generi un errore durante il riconoscimento dei parametri.

Il seguente metodo:

definisce tre parametri, assegnando un nome al secondo e al terzo. Il modo più semplice, ma anche quello meno leggibile, per richiamare il metodo è il seguente:

Per rendere il metodo più comprensibile può essere utilizzata la seguente sintassi:

e scambiando l’ordine dei parametri:

Una limitazione era rappresentata dall’impossibilità di far seguire ad un parametro con nome, un parametro posizionale. In C# 7.2, il problema viene superato, ed è possibile compilare codice del tipo:

Private Protected

Fino alla versione 7.1 di C# erano disponibili i seguenti modificatori di accesso:

  • public : non sono presenti limitazioni nell’accesso;
  • protected: l’accesso è limitato alla classe o ai tipi derivati della classe che li contiene
  • internal: l’accesso è consentito solo nell’assembly corrente
  • private: l’accesso è consentito solo al contenitore
  • protected internal: l’accesso è limitato all’assembly corrente o i tipi derivati dalla classe di appartenenza.

A partire dalla versione 7.2 è stato introdotto un nuovo modificatore: private protected.

L’introduzione di questo nuovo modificare consente di limitare l’accesso a una classe o i tipi derivati dalla classe di appartenenza all’interno dell’assembly corrente.

Un membro dichiarato private protect non è accessibile per la classe derivata se è dichiarata all’esterno dell’assembly corrente.

Con questa nuova funzionalità il numero totale di modificatori di accesso sale a sei.

Un membro dichiarato private protect non è accessibile all’interno dell’assembly per le classi che non ereditano dalla classe in cui è dichiarato.

 Ref readonly

L’introduzione di questa nuova funzionalità può essere considerata come l’opposto delle variabili con la keyword out.  Le variabili utilizzate come parametro di un metodo con la keyword ref sono passate per riferimento. Una modifica all’interno del metodo, viene riportata all’esterno del metodo stesso. Le variabili utilizzate come parametro di un metodo con la keyword out possono essere utilizzate solo per ritornare un valore (output) e non come input.

Dichiarando un parametro di un metodo come readonly ref il parametro viene passato al metodo e cercando di modificarne il valore, il compilatore segnalerà un errore in quanto non modificabile. Allo stesso modo, passando un parametro out ad un metodo dovrà essere valorizzato prima di poter essere ritornato. Utilizzando insieme parametri readonly ref e out possiamo creare metodi che accettano in ingresso variabili non modificabili per riferimento e variabili che devono essere valorizzate prima che il metodo termini il suo normale flusso.

Novità in C# 7.1

A distanza di qualche mese dalla pubblicazione analizziamo alcune delle novità in C# 7.1.

C# 7.1 è stato pubblicato con l’upgrade 15.3 di Visual Studio 2017 (Agosto 2017). A differenza di altri rilasci, non tutte le novità sono disponibili automaticamente dopo l’aggiornamento, ma è necessario modificare manualmente la configurazione di Visual Studio. E’ possibile abilitare le nuove features del linguaggio dalla scheda Avanzate presente nelle proprietà di Compilazione del progetto.Visual Studio Impostazione per C#Per impostazione predefinita Visual studio utilizza l’ultima major version: per poter abilitare le novità degli ultimi rilasci è necessario impostare latest minor version.

Nel seguito di questo articolo vedremo alcune delle novità di C# 7.1.

Continua a leggere Novità in C# 7.1

Novità in C# 7.0 – Semplificazioni nel codice

In C# 7.0 sono presenti alcune funzionalità che consentono di semplificare la scrittura del codice, rendendo molto più semplice la sua lettura.

In particolare sono state introdotti i metodo expression bodied e throw expression.

Possiamo utilizzare le Expression bodied :

  • nei metodi
  • nelle properties
  • nei costruttori
  • nei distruttori
  • nelle throw exception

Le expression bodied utilizzano l’operatore “fat arrow” (=>) per definire il codice da eseguire.

Continua a leggere Novità in C# 7.0 – Semplificazioni nel codice