Tag Archives: visual studio

Visual Studio Debug – Tips And Tricks – Part 1

We use Visual Studio many hours a day but can we say that we know all the tips and tricks?

Here I share a brief collection of 3 debugging tips that I collected.

Step into specific

This feature is helpful when we have a situation like below. We set a breakpoint in line 9 and when the program counter hits that point. Now we would like to jump directly into Spagetti() without stepping into Parmiggiano(). To do so we right-click the program-counter line, Step Into Specific and then Spaghetti().

Run To Cursor (CTRL + F10)

If we have a situation like the following picture we may want to run to line 20 without stepping-over (F10) many times. With Run To Cursor we can run to the statement where our cursors is located and stop there. We can do this with right click, Run To Cursor or with the CTRL+F10 keyboard shortcut.

Peek definition

If we want to look quickly without changing context to a definition of a method or class we can use the ALT+F12 keyboard shortcut. It opens a frame inside our current code to show details of what we selected.

TL; DR

In future posts I’ll share other tricks! Stay tuned!

How to setup a Private Agent in Visual Studio Team Services

In the last post about VSTS (Visual Studio Team Services) we setup the foundations for a project.

In this we install a private agent to build and deploy our project.

VSTS provides hosted agents to build and deploy. When we use a hosted agent, Microsoft takes care of the maintenance and upgrades. So for many teams this is the simplest way. Every agent has a set of capabilities that indicate what it can do. Capabilities are name-value pairs that are either automatically discovered by the agent software, in which case they are called system capabilities, or those that you define, in which case they are called user capabilities.
If the hosted agents do not suit our needs we can setup our dedicated agent and that’s the topic of this post.

Continue reading

How to get started with Visual Studio Team Services

In this post we’re going to explore how to get a full enterprise-grade development platform for free in 4 steps. Microsoft is offering for free the same environment that all of its sw engineers use every day to us.
Continue reading

Sviluppo nel mondo MS (aprile 2017)

Disclaimer: non ho idea di cosa sto parlando, sono in una fase di brainstorming e potrei dire le più alte stupidaggini.

Quindi se io volessi sviluppare un’app partendo da foglio bianco nel 2017 restando nell’ecosistema degli strumenti Microsoft posso scegliere tra:

  • .NET Framework 4.6(.2): il famosissimo Framework standard e completissimo che tutti conosciamo per applicazioni e web sistema operativo Windows centriche;
  • .NET Core: evoluzione del .NET Framework (che non ho capito se si fermerà alla versione 4.6.2). Ridisegnato, open-source, per applicazioni server/console (?) multi-piatta (Windows, macOS, Linux) (ASP.NET Core). Non ci sono GUI multi-piattaforma (WPF, tipo).
  • Xamarin per applicazioni mobile multi-piattaforma.
  • UWP: Parte del .NET Core per sviluppare app che attraversano tutte le varianti del SO Windows 10 (da Enterprise a IoT, Mobile e Xbox One compresi).

Mettiamola graficamente (grazie blog Microsoft)

Immagine

La cosa incredibile è che con Visual Studio e C# si possono attraversare tutte queste tecnologie. Fantastico.

Senza menzionare tencologie/integrazioni con motori grafici quali Unity (con cui fare giochi, applicazioni VR/AR) e potenza del cloud (Azure che è un mondo vastissimo solo quello).

Servizio WCF ospitato nei Windows Services

Mi sono sempre chiesto la differenza tra ospitare un servizio WCF in IIS e nei Windows Services (services.msc, per capirsi). Così mi sono documentato e ho trovato quanto segue nell’MSDN.

image

Non contento ho fatto una prova completa dalla creazione del progetto all’installazione e interrogazione del servizio per capirci di più. Metto a disposizione il download della soluzione di Visual Studio 2015 che implementa questo esperimento.

Questi sono stati i passaggi.

  1. Nuovo progetto di tipo WCF Service Library
    1
  2. Ho rinominato con F2 i nomi dei file del progetto standard e del servizio che volevo implementare. Ho chiamato l’interfaccia ICalculatorService e la classe che lo implementa CalculatorService. Il servizio espone una funzionalità di somma di numeri con virgola.2
  3. Implementazione molto semplice nella classe CalculatorService.
    3
  4. Ho eseguito il progetto (F5) e mi sono imbattuto subito in un problema: AddressAccessDeniedException. Cercando su MSDN e StackOverflow ho capito che è un problema di privilegi. Per registrare un endpoint di ascolto bisogna avere permessi di amministratore.
    4
  5. Riavviato Visual Studio come amministratore e rieseguito il processo tutto parte senza problemi nell’host dei servizi.5
  6. E con il WCF test client le somme funzionano.6
  7. Viene il momento di creare un nuovo progetto per creare un Servizio Windows che ospiti il servizio WCF. Aggiungo quindi il progetto alla soluzione.7
  8. Un po’ di rinomina sui nomi del file e del servizio che chiamo WindowsCalculatorService rendono più chiaro il lavoro.8
  9. Aggiungo al progetto un installer per facilitare il lavoro di installazione del servizio. Clic destro, Add Installer.9
  10. Il bravo Visual Studio inserisce l’installer correttamente e vado a valorizzare con dei nomi sensati alcune proprietà tipo il nome del servizio con cui poi lo stesso comparirà nell’elenco dei servizi di Windows. C’è anche la possibilità di dare una descrizione (che io ho omesso).10
  11. Sostituisco il metodo Main() di Program.cs del progetto WindowsCalculatorService con queste righe di codice per permettere l’installazione semplicemente avviando l’exe e digitando una lettera: I installa, U disinstalla. 11
  12. Per fare funzionare questo trucchetto bisogna convertire il progetto in progetto Console andando nelle Proprietà del progetto stesso. 12
  13. Per far sì che il servizio WCF sia correttamente configurato quando ospitato dal servizio Windows bisogna riportare la configurazione dal file App.config del progetto WCF a quello del servizio di Windows. Attenzione! Riportare solo la sezione <system.serviceModel>! 13
  14. Per permettere l’installazione del servizio di Windows è necessario avere privilegi di amministratore quindi aggiungendo un file manifest alla soluzione WindowsCalculatorService (add item –> manifest file) vado a specificare level=requireAdministrator nell’apposita sezione <security> del file.14
  15. Modifico il WindowsCalculatorService.cs affinché quando viene avviato esegua il necessario per ospitare il nostro servizio WCF CalculatorService.
    21
  16. Compilo e avvio WindowsCalculatorService.exe e il sistema operativo propone l’UAC come giusto che sia.
    15
  17. Ottenuta la conferma il programma Console ci chiede se vogliamo installare o disinstallare. Ovviamente scrivo I ed installo.16
  18. L’installer del servizio vuole sapere con che utenza deve girare il nostro servizio. Inserisco le mie credenziali.
    17
  19. Ecco che il servizio compare correttamente nell’elenco dei servizi di Windows e lo avvio.18
  20. Avviando il WCF Test Client inserisco l’endpoint specificato nel file app.config.19
  21. Il servizio è operativo e funzionante!20

Voi avete esperienza con WCF? Io l’ho sempre usato per piccole cose e sempre in IIS ma dopo questa prova con i servizi di Windows credo che li userò sempre così. Sono più adatti ai miei scopi e, soprattutto, non richiede l’installazione di IIS.