System.CodeDom 10.0.15

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.

Showing the top 20 packages that depend on System.CodeDom.

Packages Downloads
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
197
System.Management
Provides access to a rich set of management information and management events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure. Commonly Used Types: System.Management.ManagementClass System.Management.ManagementObject System.Management.SelectQuery
193
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
183
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
181
Mono.TextTemplating
Embeddable engine for the T4 templating language, a general-purpose way to generate text or code files using C#
179
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
175
Mono.TextTemplating
Embeddable engine for the T4 templating language, a general-purpose way to generate text or code files using C#
172
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
171
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
169
System.Management
Provides access to a rich set of management information and management events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure. Commonly Used Types: System.Management.ManagementClass System.Management.ManagementObject System.Management.SelectQuery When using NuGet 3.x this package requires at least version 3.4.
169
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
168
System.Management
Provides access to a rich set of management information and management events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure. Commonly Used Types: System.Management.ManagementClass System.Management.ManagementObject System.Management.SelectQuery 30ab651fcb4354552bd4891619a0bdd81e0ebdbf When using NuGet 3.x this package requires at least version 3.4.
168
System.Management
Provides access to a rich set of management information and management events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure. Commonly Used Types: System.Management.ManagementClass System.Management.ManagementObject System.Management.SelectQuery
167
System.Management
Provides access to a rich set of management information and management events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure. Commonly Used Types: System.Management.ManagementClass System.Management.ManagementObject System.Management.SelectQuery When using NuGet 3.x this package requires at least version 3.4.
167
System.Management
Provides access to a rich set of management information and management events about the system, devices, and applications instrumented to the Windows Management Instrumentation (WMI) infrastructure. Commonly Used Types: System.Management.ManagementClass System.Management.ManagementObject System.Management.SelectQuery
165

.NET Framework 4.6.2

  • No dependencies.

.NET 8.0

  • No dependencies.

.NET 9.0

  • No dependencies.

.NET 10.0

  • No dependencies.

.NET Standard 2.0

  • No dependencies.

Version Downloads Last updated
11.0.0 6 11/11/2026
11.0.0-rc.3.26522.148 13 10/27/2026
11.0.0-rc.2.26504.105 19 10/14/2026
11.0.0-rc.1.26425.128 21 9/9/2026
11.0.0-preview.7.26381.103 24 8/13/2026
11.0.0-preview.6.26359.118 33 7/17/2026
11.0.0-preview.5.26302.115 37 6/9/2026
11.0.0-preview.4.26230.115 39 5/13/2026
11.0.0-preview.3.26207.106 43 5/3/2026
11.0.0-preview.2.26159.112 42 3/12/2026
11.0.0-preview.1.26104.118 39 2/11/2026
10.0.15 5 11/11/2026
10.0.14 16 10/27/2026
10.0.13 20 10/14/2026
10.0.12 24 9/9/2026
10.0.11 25 8/13/2026
10.0.10 27 7/17/2026
10.0.9 39 6/10/2026
10.0.8 39 5/13/2026
10.0.7 37 5/4/2026
10.0.6 44 5/3/2026
10.0.5 41 3/15/2026
10.0.4 38 3/12/2026
10.0.3 45 2/11/2026
10.0.2 43 1/14/2026
10.0.1 45 12/11/2025
10.0.0 75 11/13/2025
10.0.0-rc.2.25502.107 85 10/21/2025
10.0.0-rc.1.25451.107 77 9/10/2025
10.0.0-preview.7.25380.108 86 8/13/2025
10.0.0-preview.6.25358.103 96 7/17/2025
10.0.0-preview.5.25277.114 117 6/8/2025
10.0.0-preview.4.25258.110 101 5/17/2025
10.0.0-preview.3.25171.5 104 4/11/2025
10.0.0-preview.2.25163.2 92 3/28/2025
10.0.0-preview.1.25080.5 115 3/1/2025
9.0.23 5 11/11/2026
9.0.22 14 10/27/2026
9.0.21 19 10/14/2026
9.0.20 28 9/10/2026
9.0.19 24 8/13/2026
9.0.18 35 7/17/2026
9.0.17 32 6/10/2026
9.0.16 30 5/13/2026
9.0.15 44 5/4/2026
9.0.14 40 3/12/2026
9.0.13 41 2/11/2026
9.0.12 37 1/14/2026
9.0.11 61 11/13/2025
9.0.10 87 10/18/2025
9.0.9 101 9/10/2025
9.0.8 112 8/7/2025
9.0.7 90 7/17/2025
9.0.6 89 6/15/2025
9.0.5 109 5/18/2025
9.0.4 123 4/11/2025
9.0.3 110 3/13/2025
9.0.2 126 2/18/2025
9.0.1 132 1/18/2025
9.0.0 134 11/17/2024
9.0.0-rc.2.24473.5 106 10/25/2024
9.0.0-rc.1.24431.7 117 9/12/2024
9.0.0-preview.7.24405.7 136 8/15/2024
9.0.0-preview.6.24327.7 143 7/10/2024
9.0.0-preview.5.24306.7 127 6/24/2024
9.0.0-preview.4.24266.19 128 5/26/2024
9.0.0-preview.3.24172.9 128 4/18/2024
9.0.0-preview.2.24128.5 141 3/15/2024
9.0.0-preview.1.24080.9 142 2/24/2024
8.0.0 156 11/15/2023
8.0.0-rc.2.23479.6 162 10/20/2023
8.0.0-rc.1.23419.4 157 9/15/2023
8.0.0-preview.7.23375.6 150 8/23/2023
8.0.0-preview.6.23329.7 165 8/15/2023
8.0.0-preview.5.23280.8 141 8/4/2023
8.0.0-preview.4.23259.5 148 8/4/2023
8.0.0-preview.3.23174.8 129 5/20/2023
8.0.0-preview.2.23128.3 144 7/21/2023
8.0.0-preview.1.23110.8 155 2/24/2023
7.0.0 173 12/6/2022
7.0.0-rc.2.22472.3 141 12/7/2022
7.0.0-rc.1.22426.10 141 9/17/2022
7.0.0-preview.7.22375.6 139 9/18/2022
7.0.0-preview.6.22324.4 157 9/18/2022
7.0.0-preview.5.22301.12 130 6/30/2022
7.0.0-preview.4.22229.4 147 6/30/2022
7.0.0-preview.3.22175.4 149 6/30/2022
7.0.0-preview.2.22152.2 153 6/30/2022
7.0.0-preview.1.22076.8 133 6/30/2022
6.0.2-mauipre.1.22102.15 146 6/30/2022
6.0.2-mauipre.1.22054.8 145 6/30/2022
6.0.0 159 6/30/2022
6.0.0-rc.2.21480.5 152 6/30/2022
6.0.0-rc.1.21451.13 151 6/30/2022
6.0.0-preview.7.21377.19 154 6/30/2022
6.0.0-preview.6.21352.12 143 6/30/2022
6.0.0-preview.5.21301.5 151 6/30/2022
6.0.0-preview.4.21253.7 134 6/30/2022
6.0.0-preview.3.21201.4 137 6/30/2022
6.0.0-preview.2.21154.6 163 6/30/2022
6.0.0-preview.1.21102.12 146 6/30/2022
5.0.0 180 6/30/2022
5.0.0-rc.2.20475.5 137 6/30/2022
5.0.0-rc.1.20451.14 138 6/30/2022
5.0.0-preview.8.20407.11 156 6/30/2022
5.0.0-preview.7.20364.11 149 6/30/2022
5.0.0-preview.6.20305.6 146 6/30/2022
5.0.0-preview.5.20278.1 133 6/30/2022
5.0.0-preview.4.20251.6 134 6/30/2022
5.0.0-preview.3.20214.6 160 6/30/2022
5.0.0-preview.2.20160.6 161 6/30/2022
5.0.0-preview.1.20120.5 149 6/30/2022
4.7.0 173 6/30/2022
4.7.0-preview3.19551.4 144 6/30/2022
4.7.0-preview2.19523.17 137 6/30/2022
4.7.0-preview1.19504.10 153 6/30/2022
4.6.0 183 6/30/2022
4.6.0-rc1.19456.4 161 6/30/2022
4.6.0-preview9.19421.4 134 6/30/2022
4.6.0-preview9.19416.11 153 6/30/2022
4.6.0-preview8.19405.3 142 6/30/2022
4.6.0-preview7.19362.9 143 6/30/2022
4.6.0-preview6.19303.8 142 6/30/2022
4.6.0-preview6.19264.9 172 6/30/2022
4.6.0-preview5.19224.8 152 6/30/2022
4.6.0-preview4.19212.13 145 6/30/2022
4.6.0-preview3.19128.7 146 6/30/2022
4.6.0-preview.19073.11 127 6/30/2022
4.6.0-preview.18571.3 154 6/30/2022
4.5.0 201 6/30/2022
4.5.0-rc1 152 6/30/2022
4.5.0-preview2-26406-04 138 6/30/2022
4.5.0-preview1-26216-02 136 6/30/2022
4.5.0-preview1-25914-04 139 6/30/2022
4.4.0 162 6/30/2022
4.4.0-preview2-25405-01 147 6/30/2022
4.4.0-preview1-25305-02 144 6/30/2022