namespace Insights { using System.Configuration; using System.Linq; using System.Reflection; using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.Extensibility; /// /// Version TelemetryInitializer /// public class VersionTelemetryInitializer : ITelemetryInitializer { private static string version = string.Empty; private static string tags = ConfigurationManager.AppSettings["InstrumentationTags"]; /// /// Initializes properties of the specified /// object. /// /// the telemetry channel public void Initialize(ITelemetry telemetry) { // Application Version telemetry.Context.Component.Version = VersionTelemetryInitializer.version; // Environment Tags telemetry.Context.Properties["tags"] = VersionTelemetryInitializer.tags; } /// /// Adds the VersionTelemetryInitializer to Microsoft.ApplicationInsights /// public static void Configure(Assembly assembly) { VersionTelemetryInitializer.version = assembly.GetName().Version.ToString(); if (ConfigurationManager.AppSettings.AllKeys.Contains("InstrumentationKey") && !string.IsNullOrEmpty(ConfigurationManager.AppSettings["InstrumentationKey"])) { Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.TelemetryInitializers .Add(new VersionTelemetryInitializer()); Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = ConfigurationManager.AppSettings["InstrumentationKey"]; } else { TelemetryConfiguration.Active.DisableTelemetry = true; } } } }