SDK Tools Reference

The Visual Studio SDK includes several tools for extension development.

Build Tools

VsixInstaller.exe

Command-line VSIX installation:

# Install an extension
VsixInstaller.exe /quiet MyExtension.vsix

# Uninstall by extension ID
VsixInstaller.exe /uninstall:MyExtension.UniqueGuid

# Install to experimental instance
VsixInstaller.exe /rootSuffix:Exp MyExtension.vsix

Location: C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VSIXInstaller.exe

CreateExpInstance.exe

Manage experimental instances:

# Reset experimental instance
CreateExpInstance.exe /Reset /VSInstance=17.0 /RootSuffix=Exp

# Create new experimental instance
CreateExpInstance.exe /Create /VSInstance=17.0 /RootSuffix=MyTest

devenv.exe Commands

# Reset experimental instance settings
devenv.exe /ResetSettings /rootsuffix Exp

# Clear VS cache
devenv.exe /ClearCache /rootsuffix Exp

# Run in safe mode
devenv.exe /SafeMode

# Generate activity log
devenv.exe /Log

# Run with experimental instance
devenv.exe /rootSuffix Exp

Design Tools

VSCT Compiler (vsct.exe)

Compiles .vsct command table files:

vsct.exe MyCommands.vsct MyCommands.cto -S MyCommands.cs

ResGen (resgen.exe)

Resource file generation:

resgen.exe Resources.resx Resources.resources

Debugging Tools

ActivityLog.xml

VS activity log location:

%APPDATA%\Microsoft\VisualStudio\17.0_<hash>\ActivityLog.xml

Enable verbose logging:

devenv.exe /Log
# Or set environment variable
$env:VSLOGENABLED = "1"

Error List Inspection

View MEF composition errors:

  1. Help > About Microsoft Visual Studio
  2. Click “Copy Info”
  3. Check for extension errors

Package Development

PkgDef Files

Package definition file format:

; Package registration
[$RootKey$\Packages\{GUID}]
@="My Package"
"InprocServer32"="$PackageFolder$\MyPackage.dll"
"Class"="MyNamespace.MyPackage"

Generating PkgDef

The build process auto-generates .pkgdef files from attributes:

[PackageRegistration(UseManagedResourcesOnly = true)]
[Guid("...")]
public sealed class MyPackage : AsyncPackage { }

Registry Tools

RegPkg.exe

Register packages manually:

regpkg.exe /root:Software\Microsoft\VisualStudio\17.0 MyPackage.dll

CreatePkgDef.exe

Generate .pkgdef from assembly:

CreatePkgDef.exe MyPackage.dll MyPackage.pkgdef

Template Tools

Project Template Structure

MyTemplate/
├── MyTemplate.vstemplate
├── MyProject.csproj
├── Program.cs
└── __TemplateIcon.ico

Item Template Structure

MyItemTemplate/
├── MyItemTemplate.vstemplate
├── MyClass.cs
└── __TemplateIcon.ico

Template Parameters

ParameterDescription
$safeprojectname$Safe project name for identifiers
$projectname$Project name as entered
$safeitemrootname$File name without extension
$rootnamespace$Root namespace
$guid1$ - $guid10$Generated GUIDs
$time$Current timestamp
$year$Current year
$username$Current user
$registeredorganization$Organization name
$targetframeworkversion$Target framework

Command Line Tools Summary

ToolPurpose
VsixInstaller.exeInstall/uninstall VSIX
CreateExpInstance.exeManage experimental instances
devenv.exeVS with command options
vsct.exeCompile command tables
regpkg.exeRegister packages
CreatePkgDef.exeGenerate pkgdef

NuGet Packages

Essential Packages

PackagePurpose
Microsoft.VSSDK.BuildToolsBuild tools for VSIX
Microsoft.VisualStudio.SDKVS SDK reference assemblies
Community.VisualStudio.Toolkit.17Community Toolkit
Microsoft.VisualStudio.LanguageServer.ClientLSP client

Installing SDK

<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.*">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native</IncludeAssets>
</PackageReference>