System.CodeDom 9.0.12

About

Provides functionality for dynamically generating and compiling source code using the Code Document Object Model (CodeDOM).

It allows developers to represent code in a language-agnostic format and then generate code in multiple languages, such as C# and VB.NET. The primary use cases include creating dynamic code generation tools, runtime code generation, and facilitating code analysis or transformation.

For a new modern development consider using the .NET Compiler Platform SDK, in particular Roslyn source generators.

Key Features

  • Write code using a common object model that can be translated into multiple programming languages.
  • Generate and compile code at runtime based on the CodeDOM.

How to Use

Generating and compiling C# code:

using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;

// Create a new CodeCompileUnit to hold the code
var compileUnit = new CodeCompileUnit();

// Create a namespace
var codeNamespace = new CodeNamespace("MyNamespace");
compileUnit.Namespaces.Add(codeNamespace);

// Create a class
var classDeclaration = new CodeTypeDeclaration("MyClass")
{
    IsClass = true
};
codeNamespace.Types.Add(classDeclaration);

// Add a simple method to the class
var method = new CodeMemberMethod
{
    Name = "HelloWorld",
    ReturnType = new CodeTypeReference(typeof(void)),
};
classDeclaration.Members.Add(method);

var methodInvocation = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("Console"),
                                                      "WriteLine",
                                                      new CodePrimitiveExpression("Hello, World!"));
method.Statements.Add(methodInvocation);

// Generate C# code from the CodeDOM structure
CodeDomProvider provider = new CSharpCodeProvider();

using (var writer = new StringWriter())
{
    var codeGenereationOptions = new CodeGeneratorOptions()
    {
        BlankLinesBetweenMembers = false,
        IndentString = "  ",
    };

    provider.GenerateCodeFromCompileUnit(compileUnit, writer, codeGenereationOptions);
    Console.WriteLine(writer.GetStringBuilder().ToString());
}

This example generates:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MyNamespace {

  public class MyClass {
    private void HelloWorld() {
      Console.WriteLine("Hello, World!");
    }
  }
}

Main Types

The main types provided by this library are:

  • System.CodeDom.CodeObject
  • System.CodeDom.CodeCompileUnit
  • System.CodeDom.CodeNamespace
  • System.CodeDom.CodeTypeDeclaration
  • System.CodeDom.CodeMemberMethod
  • System.CodeDom.CodeTypeReference
  • System.CodeDom.CodeMethodInvokeExpression
  • System.CodeDom.CodeTypeReferenceExpression
  • System.CodeDom.CodePrimitiveExpression
  • System.CodeDom.Compiler.CodeDomProvider
  • System.CodeDom.Compiler.CodeGeneratorOptions
  • Microsoft.CSharp.CSharpCodeProvider
  • Microsoft.VisualBasic.VBCodeProvider

Additional Documentation

Feedback & Contributing

System.CodeDom is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

No packages depend on System.CodeDom.

https://go.microsoft.com/fwlink/?LinkID=799421

.NET Framework 4.6.2

  • No dependencies.

.NET 8.0

  • No dependencies.

.NET 9.0

  • No dependencies.

.NET Standard 2.0

  • No dependencies.

Version Downloads Last updated
10.0.2 3 01/27/2026
10.0.1 4 12/14/2025
10.0.0 4 12/14/2025
10.0.0-rc.2.25502.107 5 10/23/2025
10.0.0-rc.1.25451.107 5 10/23/2025
10.0.0-preview.7.25380.108 6 09/05/2025
10.0.0-preview.6.25358.103 7 07/16/2025
10.0.0-preview.5.25277.114 8 06/26/2025
10.0.0-preview.4.25258.110 7 06/26/2025
10.0.0-preview.3.25171.5 6 06/26/2025
10.0.0-preview.2.25163.2 7 06/26/2025
10.0.0-preview.1.25080.5 7 07/16/2025
9.0.12 3 01/27/2026
9.0.11 5 12/14/2025
9.0.10 4 11/02/2025
9.0.9 5 09/16/2025
9.0.8 7 09/05/2025
9.0.7 8 07/11/2025
9.0.6 8 07/11/2025
9.0.5 7 06/26/2025
9.0.4 7 06/26/2025
9.0.3 6 07/16/2025
9.0.2 8 02/21/2025
9.0.1 8 02/01/2025
9.0.0 8 02/01/2025
9.0.0-rc.2.24473.5 9 02/01/2025
9.0.0-rc.1.24431.7 7 02/01/2025
9.0.0-preview.7.24405.7 9 02/01/2025
9.0.0-preview.6.24327.7 6 02/01/2025
9.0.0-preview.5.24306.7 8 02/01/2025
9.0.0-preview.4.24266.19 7 02/01/2025
9.0.0-preview.3.24172.9 8 02/01/2025
9.0.0-preview.2.24128.5 7 02/01/2025
9.0.0-preview.1.24080.9 8 02/01/2025
8.0.0 8 02/01/2025
8.0.0-rc.2.23479.6 7 02/01/2025
8.0.0-rc.1.23419.4 8 02/01/2025
8.0.0-preview.7.23375.6 9 02/01/2025
8.0.0-preview.6.23329.7 6 02/01/2025
8.0.0-preview.5.23280.8 9 02/01/2025
8.0.0-preview.4.23259.5 9 02/01/2025
8.0.0-preview.3.23174.8 8 02/01/2025
8.0.0-preview.2.23128.3 8 02/01/2025
8.0.0-preview.1.23110.8 9 02/01/2025
7.0.0 10 02/01/2025
7.0.0-rc.2.22472.3 8 02/01/2025
7.0.0-rc.1.22426.10 9 02/01/2025
7.0.0-preview.7.22375.6 9 02/01/2025
7.0.0-preview.6.22324.4 6 02/01/2025
7.0.0-preview.5.22301.12 7 02/01/2025
7.0.0-preview.4.22229.4 9 02/01/2025
7.0.0-preview.3.22175.4 7 02/01/2025
7.0.0-preview.2.22152.2 9 02/01/2025
7.0.0-preview.1.22076.8 7 02/01/2025
6.0.0 9 02/01/2025
6.0.0-rc.2.21480.5 7 02/01/2025
6.0.0-rc.1.21451.13 8 02/01/2025
6.0.0-preview.7.21377.19 9 02/01/2025
6.0.0-preview.6.21352.12 8 02/01/2025
6.0.0-preview.5.21301.5 7 02/01/2025
6.0.0-preview.4.21253.7 9 02/01/2025
6.0.0-preview.3.21201.4 9 02/01/2025
6.0.0-preview.2.21154.6 8 02/01/2025
6.0.0-preview.1.21102.12 9 02/01/2025
5.0.0 7 02/01/2025
5.0.0-rc.2.20475.5 9 02/01/2025
5.0.0-rc.1.20451.14 9 02/01/2025
5.0.0-preview.8.20407.11 7 02/01/2025
5.0.0-preview.7.20364.11 8 02/01/2025
5.0.0-preview.6.20305.6 7 02/01/2025
5.0.0-preview.5.20278.1 7 02/01/2025
5.0.0-preview.4.20251.6 9 02/01/2025
5.0.0-preview.3.20214.6 7 02/01/2025
5.0.0-preview.2.20160.6 9 02/01/2025
5.0.0-preview.1.20120.5 8 02/01/2025
4.7.0 6 02/01/2025
4.7.0-preview3.19551.4 8 02/01/2025
4.7.0-preview2.19523.17 8 02/01/2025
4.7.0-preview1.19504.10 8 02/01/2025
4.6.0 8 02/01/2025
4.6.0-rc1.19456.4 9 02/01/2025
4.6.0-preview9.19421.4 8 02/01/2025
4.6.0-preview9.19416.11 7 02/01/2025
4.6.0-preview8.19405.3 6 02/01/2025
4.6.0-preview7.19362.9 9 02/01/2025
4.6.0-preview6.19303.8 9 02/01/2025
4.6.0-preview6.19264.9 8 02/01/2025
4.6.0-preview5.19224.8 9 02/01/2025
4.6.0-preview4.19212.13 7 02/01/2025
4.6.0-preview3.19128.7 8 02/01/2025
4.6.0-preview.19073.11 8 02/01/2025
4.6.0-preview.18571.3 7 02/01/2025
4.5.0 7 02/01/2025
4.5.0-rc1 8 02/01/2025
4.5.0-preview2-26406-04 8 02/01/2025
4.5.0-preview1-26216-02 8 02/01/2025
4.5.0-preview1-25914-04 8 02/01/2025
4.4.0 10 11/18/2024
4.4.0-preview2-25405-01 8 02/01/2025
4.4.0-preview1-25305-02 7 02/01/2025