Skip to content
RRO edited this page Mar 23, 2018 · 13 revisions

Visual Studio Perfviz (Perfviz) is a set of programs that allows visualization in Visual Studio of execution times and errors of software deployed in the cloud. It works with any .NET 4.6 program or later and uses Azure Application Insights as data store and to query data. To inject code, Mono.Cecil is used. It consists of 3 major parts:

  • Visualization: The InSituVisualization plugin for Visual Studio, used for visualization of values
  • Injector: The Probe Injection Executable that injects code into built assemblies
  • Probe: The Probe (an assembly) that contains the to be injected code
  • Some provided assembly of the user Perfviz is programmed to work together with Microsoft Azure, but it contains interfaces to work with any kind of online database or REST interface to query data. Effort has been put into designing a very responsive data store that can be filtered.

For an installation guide, visit this wiki page: https://github.com/sealuzh/visual-studio-perfviz/wiki/1.-Installation-Guide

For an in-depth explanation of how it works, start here: https://github.com/sealuzh/visual-studio-perfviz/wiki/2.-Data-Collection,-Querying-and-Retrieval:-TelemetryStore

For How-To's on how to change the code to fit your needs, start here: https://github.com/sealuzh/visual-studio-perfviz/wiki/HowTo:-Adding-a-new-Data-Collection-Service

Use Case

A typical use case would look like the following (assuming that all software has been installed):

  • After a successfull build, the developer decides to test his code in the live testing environment on any server. He therefore uses the Injector to inject the necessary code into his assembly and then publishes it to the testing server.
  • When injecting, the Injector injects code snippets referring to the Probe to the beginning and end of any method found in the assembly, adds the Probe library, therefore logging execution times
  • The assembly is then published on the testing environment. The injected code connects to Azure Application Insights and sends telemetry data of every method execution to Application Insights.
  • The plugin in VS connects to the same Application Insights instance and queries the telemetry data via the Insights REST interface. As soon as the data arrives in VS, it is displayed as a summary next to every method call.

Works with (and has been tested with):

  • .NET Core v2.0.3 or higher (due to a bug in v2.0.2 and lower)
  • .NET Framework 4.7.1 or higher