Change log

Typewriter 1.22

Support for Visual Studio 2019.


  • Changed to async package loading to support new versions of Visual Studio. (#286)
  • Removed support for Visual Studio 2013.
  • Published a separate version for Visual Studio 2013

Typewriter 1.21

Added install target for Visual Studio 2019.


  • Added install target for Visual Studio 2019. (#292)
  • Fixes a few spelling errors in comments and error message. (#291)

Typewriter 1.20

Added the ability to get type arguments passed to attribute.


  • Added the ability to get type arguments passed to attribute. (#281)

Typewriter 1.19

Support for referencing external assemblies in templates.


  • Support for referencing external assemblies in templates. (#274)

Typewriter 1.18

Support for long enum values.


  • Support for long enum values. (#249)

Typewriter 1.17

Option not to add generated files to the current project.


  • Fixed bug where $Url could sometimes throw a null reference exception. (#246)


  • Added option not to add generated files to the current project. (#242)
    (Note: Typewriter will be unable to track generated files that's not added to the project.)

Typewriter 1.16

Support for generating ValueTuples.


  • Added support for generating ValueTuples. (#231)
  • Fixed bug where badly formatted DocComments caused generation to fail. (#234)

Typewriter 1.15

Support for converting Class, Enum and Interface to Type.


  • Added support for converting Class, Enum and Interface to Type. (#221)

Typewriter 1.14

Render All Templates context menu, bug fixes.


  • Fixed bug where convension-based routes combined with method route attribute returned wrong url. (#222)


  • Fixed problem with missing prerequisets when installing in Visual Studio 2017. (#219)
  • Fixed bug where $Url returned empty string when using convension-based routing. (#218)
  • Added support for routeprefix on base class. (#220)


  • Added a Render All Templates context menu. (#214)
  • Added support for IsAbstract on Properties and Methods. (#215)

Typewriter 1.13

Improved support ASP.NET Core routing.


  • Improved support ASP.NET Core routing. (#191)
  • Added support for special characters in C# comments. (#203)

Typewriter 1.12

Item template for ASP.NET Core projects, bug fixes


  • Fixed request data bug caused by url encoding parameters. (#198)


  • Fixed url encoding bug. (#197)


  • Added url encoding to arguments in the $Url extension method. (#172)
  • Added item template for core projects. (#185)
  • Fixed bug where unloaded projects caused generation to crash. (#168)
  • Fixed bug where output files are written as UTF-8 and read as ANSI by Visual Studio. (#178)
  • Added default value for Date type. (#165)

Typewriter 1.11

Improved support for Visual Studio 2017 RTM.


  • Improved support Visual Studio 2017 RTM.
  • Added default value for empty Guids. (#165)
  • Changed default value to null for int? and bool?
  • Added Class.IsAbstract. (#155)

Typewriter 1.10

Improved support for partial types.

Breaking changes!

This release changes the default behavior when rendering partial classes and interfaces. To keep the old behavior you'll need to set the PartialRenderingMode in the template constructor to Legacy.


  • Improved support for partial classes and interfaces. (#127)

Typewriter 1.9

Support for Visual Studio 2017.


  • Added Visual Studio 2017 install target. (#152)
  • Fixed a bug where using Linq statements in the template caused the generation to fail. (#154)
  • Added syntax coloring for new TypeScript keywords.

Typewriter 1.8

Support for interpolated strings, bug fixes.


  • Fixed camel-case bug. (#146)
  • CancellationToken parameters are now removed before generating RequestData. (#145)


  • Fixed bug where classes recursively implementing IEnumerable caused Visual Studio to hang when resolving the type name. (#144)


  • Fixed bug where interpolated strings caused render errors. (#129)
  • Added support for getting the correct type from custom collections inheriting from IEnumerable<T>. (#131)
  • Fixed bug where Type.OriginalName returned empty string for array types. (#132)
  • Fixed bug where the original source file could be overwritten. (#142)

Typewriter 1.7

Support for parameter default values.


  • Fixed bug where Visual Studio 2013 incorrectly loaded the Roslyn-based metadata provider.


  • Fixed bug where WebAPI routes didn't render correctly.
  • Added support for [controller] and [action] tokens in routes.


  • Fixed bug where pascal cased route parameters produced invalid urls.


  • Fixed bug where boolean default values returned as True/False instead of true/false.


  • Added support for getting default values of method parameters.

Typewriter 1.6

Improved error messages when rendering templates.


  • Error list now shows the actual exception message instead of "Exception has been thrown by the target of an invocation".
  • Stack trace from template errors are now displayed in the Typewriter output pane.
  • Only source files with build action "Compile" are included when rendering templates.

Typewriter 1.5

Support for documentation comments and constant values.


  • Added basic support for documentation comments.
  • Added support for getting constant values.

Typewriter 1.4

Options for auto-rendering.


  • Fixed bug where route attributes with wildcard parameters didn't render correctly.
  • Fixed bug where named routes didn't render correctly.


  • Added a Typewriter section in the Visual Studio options dialog.
  • Added option to enable/disable rendering when saving TypeScript Template (.tst) files.
  • Added option to enable/disable auto-render when changing C# files.

Typewriter 1.3

Support for hexadecimal enum values, rendering source files without namespace and performance improvements.


  • Added a context menu to trigger rendering of a template.


  • Fixed bug when camel-casing properties with consecutive uppercase letters e.g. IPAddress is now translated to ipAddess.
  • Restored possibility to change output folder in OutputFilenameFactory.


Changing the output folder using OutputFilenameFactory is NOT supported and can lead to unexpected behaviour resulting in loss of files.


  • Improvements to the rendering queue implementation.
  • Support for rendering source files without namespace.
  • Support for hexadecimal enum values.
  • Invalid item filters are displayed in the Visual Studio Error List.
  • Bug fixes.

Typewriter 1.2

Template settings API and improved error handling.


  • Added a settings API to templates via an optional template constructor (see Getting started for more info).
  • Added setting to specify which projects are included when rendering templates.
  • Added settings for output filename and file extension.
  • Errors and warnings from template compilation and rendering are displayed in the Visual Studio Error List.
  • Updated the default item template.

Typewriter 1.1

Improved syntax coloring in the template editor, support for using TFS Server Workspaces and improved support for working with custom methods.


  • Improved syntax coloring in the template editor.
  • Moved $Default from type to extensions. (Note: To use $Default, add "using Typewriter.Extensions.Types;" to your template.)
  • Unwrap returns the unwrapped type instead of the type name.
  • Added $IsDefined to types to determine which types are defined in the current solution.
  • Removed Visual Studio 2013 remarks from quick info when using Visual Studio 2015.
  • Added statement completion for adding custom code blocks.
  • Added support for automatic check-out when using TFS with a server workspace.
  • Added support for returning collections from custom methods.
  • Bug fixes.

Typewriter 1.0

Support for Visual Studio 2015 RTM, Roslyn-based code generation (vs 2015 only), improved template editor experience with statement completion and syntax coloring for templates, lambda filters and custom code blocks.

Breaking changes!

If you have been using the preview version (0.9.*) you'll need to modify your templates after installing 1.0. The last preview version (0.9.13) is still available for download from the GitHub repository under releases of you prefer to continue using the preview.


  • Fixed bug where calling IsPrimitive on array-types caused a crash.
  • Fixed bug where deleting a c# file didn't delete the corresponding TypeScript file.


  • Added $Events and $Delegates to the code model.
  • Removed the wrapper object for methods with only one parameter in extension method RequestData.
  • Minor bug fixes.


  • Fixed a bug where templates would sometimes crash when using custom code blocks.
  • Fixed a bug where QuickInfo on .NET Framework Types didn't display the summary.


  • Added class properties e.g. $BaseClass, $ContaintingClass and $Methods to types.
  • Renamed extension method PostData to RequestData.
  • Fixed bug where $IsGeneric on interfaces would sometimes cause a crash.


  • Support for Visual Studio 2015 RTM (Community, Professional and Enterprise).
  • Roslyn-based metadata engine for Visual Studio 2015.
  • Consolidated code model.
  • IntelliSense and syntax highlighting for code blocks and lambda filters.
  • Statement completion for custom methods.
  • Changed syntax for code blocks from lambda vaiables to proper methods.
  • Enabled using-statements for code blocks.
  • Support for C# 6.0 features in code blocks.
  • Full generics support for classes and methods.
  • Removed type shortcuts from constants, fields, properties and methods.
  • Support for ContainingClass on classes, namespaces and enums.
  • Support for Parent to get the parent context on code items.
  • Extension methods for ASP.NET Web API.
  • Performance improvements.
  • Bug fixes.

Typewriter preview


  • Basic support for Generic classes.
  • Added BaseClass property to classes.


  • Support for Visual Studio 2015 RC (except ASP.NET vNext applications).
  • Changed the source file path mapping to be relative to the project directory instead of the solution directory.
  • Minor bug fixes


  • Performance optimizations when scanning solution for template files.


  • Performance optimizations when saving template file with advanced filters.
  • Added one retry when failing to render when saving template file.


  • Fixed bug when renaming files.


  • Support for lambda expressions in filters.
  • Changed syntax for custom methods.
  • Minor bug fixes


  • Basic support for custom methods.


  • Support for IsDate eg. $IsDate[true template][false template].


  • Support for interface filters by starting filter string with ":" eg. $Classes(:IModel)[template].
  • Support for attribute filters by encapsulating filter string with "[]" eg. $Classes([Model])[template].
  • Fixed bug when renaming files.
  • The project file is now saved when rendering templates.