Project Items (Visual Studio SDK)
Custom tools let you associate a tool with an item in a project and run that tool whenever the file is saved. Certain custom tools, sometimes referred to as single-file generators, are frequently used to implement translators that generate code from data and vice versa. For example, single-file generators create Visual C#, Visual Basic, and Visual J# source code out of the .settings and .resx files. The generated source code provides strongly-typed access to the data in the .settings and .resx files. The Visual C#, Visual Basic, and Visual J# project types support custom tools; Visual C++ project types do not. Your own project types can also support custom tools.
Custom tools are registered components that implement the IVsSingleFileGenerator interface.
Custom tools are associated with a ProjectItem interface object, and are like designers and editors. A custom tool takes the file represented by a ProjectItem as input and writes a new file whose file name is provided by the DefaultExtension method.