Skip to content

feat(config): add Visual Studio options page generator #17

Description

@CalvinAllen

Summary

Provide a helper or source generator to automatically create a Visual Studio Options page for telemetry configuration. Allows users to configure telemetry settings through the standard VS Options dialog.

Current State

Extensions must manually create an Options page to let users configure telemetry, requiring:

  • DialogPage subclass
  • Registration attributes
  • Property grid setup
  • Settings persistence

Proposed Solution

Option 1: Base Class

// Inherit from provided base class
[Guid("...")]
public class MyTelemetryOptionsPage : TelemetryOptionsPageBase
{
    // Automatically provides UI for:
    // - Enable/disable telemetry
    // - OTLP endpoint configuration  
    // - Console exporter toggle
    // - Sampling rate
    // - Custom endpoint headers
    
    // Override to add extension-specific options
    protected override void AddCustomOptions(PropertyGrid grid)
    {
        // Add your own settings
    }
}

Option 2: Source Generator

// Attribute triggers generation
[GenerateTelemetryOptionsPage]
public partial class MyExtensionPackage : AsyncPackage
{
    // Options page automatically generated and registered
}

Option 3: Runtime Registration

// In package initialization
VsixTelemetry.RegisterOptionsPage(this, new TelemetryOptionsConfig
{
    PageName = "My Extension Telemetry",
    Category = "My Extension",
    AllowEndpointConfiguration = true,
    AllowSamplingConfiguration = true
});

Generated UI

The options page would include:

  • Enable Telemetry (checkbox)
  • OTLP Endpoint (text field, validated URL)
  • Use HTTP (checkbox, vs gRPC)
  • Sampling Rate (slider 0-100%)
  • Enable Console Output (checkbox, for debugging)
  • Custom Headers (key-value grid)

Benefits

  • Consistent telemetry UI across extensions
  • Reduces boilerplate significantly
  • Users get familiar settings location
  • Settings automatically persisted

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions