System.CodeDom 9.0.0-rc.2.24473.5

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.
128
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
129
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
133
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
135
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
136
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
137
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
144
Microsoft.Build.Tasks.Core
This package contains the Microsoft.Build.Tasks assembly which implements the commonly used tasks of MSBuild.
153
Microsoft.CodeAnalysis.Workspaces.MSBuild
.NET Compiler Platform ("Roslyn") support for analyzing MSBuild projects and solutions. This should be used with at least one of the following packages to add the appropriate language support: - Microsoft.CodeAnalysis.CSharp.Workspaces - Microsoft.CodeAnalysis.VisualBasic.Workspaces More details at https://aka.ms/roslyn-packages This package was built from the source at https://github.com/dotnet/roslyn/commit/e68227ea677b76a3c603bd616f03ea6d952b2458.
134
Microsoft.CodeAnalysis.Workspaces.MSBuild
.NET Compiler Platform ("Roslyn") support for analyzing MSBuild projects and solutions. This should be used with at least one of the following packages to add the appropriate language support: - Microsoft.CodeAnalysis.CSharp.Workspaces - Microsoft.CodeAnalysis.VisualBasic.Workspaces More details at https://aka.ms/roslyn-packages This package was built from the source at https://github.com/dotnet/roslyn/commit/f99bb16a395e48a05520ba7af1549b20bfdeee36.
129
Microsoft.CodeAnalysis.Workspaces.MSBuild
.NET Compiler Platform ("Roslyn") support for analyzing MSBuild projects and solutions. This should be used with at least one of the following packages to add the appropriate language support: - Microsoft.CodeAnalysis.CSharp.Workspaces - Microsoft.CodeAnalysis.VisualBasic.Workspaces More details at https://aka.ms/roslyn-packages This package was built from the source at https://github.com/dotnet/roslyn/commit/fa72fa61b0d822ea8a3fbeb96f668340419ab5cd.
150
Mono.TextTemplating
Embeddable engine for the T4 templating language, a general-purpose way to generate text or code files using C#
134
Mono.TextTemplating
Embeddable engine for the T4 templating language, a general-purpose way to generate text or code files using C#
381
Mono.TextTemplating
Embeddable engine for the T4 templating language, a general-purpose way to generate text or code files using C#
417
Mono.TextTemplating
Open source implementation of the T4 templating engine This package allows embedding the T4 engine in an application. * To install as a dotnet global or local tool, use `dotnet-t4` instead. * To install in a project as a `DotNetCliToolReference`, use `dotnet-t4-project-tool` instead.
341
MsgPack.Cli
MessagePack is fast, compact, and interoperable binary serialization format. This package provides MessagePack serialization/deserialization APIs. This pacakge also supports Mono, Xamarin, .NET Core and Unity.
144
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
129
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
147
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.
127

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
11.0.0-preview.2.26159.112 9 03/11/2026
11.0.0-preview.1.26104.118 18 02/12/2026
10.0.5 8 03/13/2026
10.0.4 6 03/11/2026
10.0.3 17 02/12/2026
10.0.2 16 01/15/2026
10.0.1 55 12/10/2025
10.0.0 57 11/12/2025
10.0.0-rc.2.25502.107 91 10/14/2025
10.0.0-rc.1.25451.107 65 09/09/2025
10.0.0-preview.7.25380.108 55 08/14/2025
10.0.0-preview.6.25358.103 80 07/16/2025
10.0.0-preview.5.25277.114 78 06/08/2025
10.0.0-preview.4.25258.110 108 05/15/2025
10.0.0-preview.3.25171.5 97 04/14/2025
10.0.0-preview.2.25163.2 88 04/02/2025
10.0.0-preview.1.25080.5 90 04/02/2025
9.0.14 7 03/11/2026
9.0.13 17 02/12/2026
9.0.12 17 01/16/2026
9.0.11 39 11/12/2025
9.0.10 72 10/15/2025
9.0.9 87 09/09/2025
9.0.8 86 08/05/2025
9.0.7 68 07/09/2025
9.0.6 79 06/12/2025
9.0.5 81 05/15/2025
9.0.4 97 04/09/2025
9.0.3 96 04/02/2025
9.0.2 96 04/02/2025
9.0.1 95 04/02/2025
9.0.0 122 11/14/2024
9.0.0-rc.2.24473.5 89 10/22/2024
9.0.0-rc.1.24431.7 102 09/19/2024
9.0.0-preview.7.24405.7 89 08/20/2024
9.0.0-preview.6.24327.7 104 07/20/2024
9.0.0-preview.5.24306.7 110 07/20/2024
9.0.0-preview.4.24266.19 110 07/20/2024
9.0.0-preview.3.24172.9 113 07/20/2024
9.0.0-preview.2.24128.5 118 07/20/2024
9.0.0-preview.1.24080.9 113 07/20/2024
8.0.0 138 07/20/2024
8.0.0-rc.2.23479.6 126 07/20/2024
8.0.0-rc.1.23419.4 118 07/20/2024
8.0.0-preview.7.23375.6 113 07/20/2024
8.0.0-preview.6.23329.7 109 07/20/2024
8.0.0-preview.5.23280.8 116 07/20/2024
8.0.0-preview.4.23259.5 110 07/20/2024
8.0.0-preview.3.23174.8 107 07/20/2024
8.0.0-preview.2.23128.3 104 07/20/2024
8.0.0-preview.1.23110.8 121 07/20/2024
7.0.0 134 07/20/2024
7.0.0-rc.2.22472.3 132 07/20/2024
7.0.0-rc.1.22426.10 111 07/20/2024
7.0.0-preview.7.22375.6 118 07/20/2024
7.0.0-preview.6.22324.4 116 07/20/2024
7.0.0-preview.5.22301.12 134 07/20/2024
7.0.0-preview.4.22229.4 112 07/20/2024
7.0.0-preview.3.22175.4 119 07/20/2024
7.0.0-preview.2.22152.2 106 07/20/2024
7.0.0-preview.1.22076.8 114 07/20/2024
6.0.2-mauipre.1.22102.15 88 09/15/2024
6.0.0 184 06/24/2024
6.0.0-rc.2.21480.5 118 07/20/2024
6.0.0-rc.1.21451.13 110 07/20/2024
6.0.0-preview.7.21377.19 115 07/20/2024
6.0.0-preview.6.21352.12 115 07/20/2024
6.0.0-preview.5.21301.5 113 07/20/2024
6.0.0-preview.4.21253.7 111 07/20/2024
6.0.0-preview.3.21201.4 113 07/20/2024
6.0.0-preview.2.21154.6 109 07/20/2024
6.0.0-preview.1.21102.12 120 07/20/2024
5.0.0 342 02/05/2024
5.0.0-rc.2.20475.5 108 07/20/2024
5.0.0-rc.1.20451.14 109 07/20/2024
5.0.0-preview.8.20407.11 119 07/20/2024
5.0.0-preview.7.20364.11 95 07/20/2024
5.0.0-preview.6.20305.6 130 07/20/2024
5.0.0-preview.5.20278.1 112 07/20/2024
5.0.0-preview.4.20251.6 109 07/20/2024
5.0.0-preview.3.20214.6 104 07/20/2024
5.0.0-preview.2.20160.6 117 07/20/2024
5.0.0-preview.1.20120.5 120 07/20/2024
4.7.0 115 07/20/2024
4.7.0-preview3.19551.4 120 07/20/2024
4.7.0-preview2.19523.17 100 07/20/2024
4.7.0-preview1.19504.10 120 07/20/2024
4.6.0 107 07/20/2024
4.6.0-rc1.19456.4 121 07/20/2024
4.6.0-preview9.19421.4 116 07/20/2024
4.6.0-preview9.19416.11 110 07/20/2024
4.6.0-preview8.19405.3 117 07/20/2024
4.6.0-preview7.19362.9 109 07/20/2024
4.6.0-preview6.19303.8 106 07/20/2024
4.6.0-preview6.19264.9 124 07/20/2024
4.6.0-preview5.19224.8 123 07/20/2024
4.6.0-preview4.19212.13 109 07/20/2024
4.6.0-preview3.19128.7 114 07/20/2024
4.6.0-preview.19073.11 122 07/20/2024
4.6.0-preview.18571.3 118 07/20/2024
4.5.0 120 07/20/2024
4.5.0-rc1 116 07/20/2024
4.5.0-preview2-26406-04 128 07/20/2024
4.5.0-preview1-26216-02 112 07/20/2024
4.5.0-preview1-25914-04 110 07/20/2024
4.4.0 274 02/04/2024
4.4.0-preview2-25405-01 111 07/20/2024
4.4.0-preview1-25305-02 118 07/20/2024