System.CodeDom 10.0.0-preview.1.25080.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.CodeObjectSystem.CodeDom.CodeCompileUnitSystem.CodeDom.CodeNamespaceSystem.CodeDom.CodeTypeDeclarationSystem.CodeDom.CodeMemberMethodSystem.CodeDom.CodeTypeReferenceSystem.CodeDom.CodeMethodInvokeExpressionSystem.CodeDom.CodeTypeReferenceExpressionSystem.CodeDom.CodePrimitiveExpressionSystem.CodeDom.Compiler.CodeDomProviderSystem.CodeDom.Compiler.CodeGeneratorOptionsMicrosoft.CSharp.CSharpCodeProviderMicrosoft.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 |
|---|---|
|
DevExpress.CodeParser
This package provides utilities for code parsing and generation. Generally, it should not be used directly in your applications.
|
12 |
|
DevExpress.Reporting.Core
This package implements core functionality for DevExpress XtraReports Suite.
|
11 |
|
DevExpress.Blazor.Reporting.JSBasedControls
This package implements the functionality related to the JavaScript-based Report Designer and Viewer Blazor components.
|
9 |
|
DevExpress.CodeParser
This package provides utilities for code parsing and generation. Generally, it should not be used directly in your applications.
|
9 |
|
DevExpress.Web.Reporting.Common
This package provides common cross-platform functionality to DevExpress Web Reporting controls.
|
8 |
|
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/dfa7fc6bdea31a858a402168384192b633c811fa.
|
8 |
|
DevExpress.Blazor.Reporting.JSBasedControls
This package implements the functionality related to the JavaScript-based Report Designer and Viewer Blazor components.
|
7 |
|
DevExpress.Reporting.CodeCompletion
This package implements code completion functionality for DevExpress XtraReports Suite.
|
7 |
|
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/5e3a11e2e7f952da93f9d35bd63a2fa181c0608b.
|
7 |
|
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/2b7d172669b2f7e55803b55f317cfcc2d4279d76.
|
7 |
|
Microsoft.SqlServer.Management.SqlParser
Microsoft.SqlServer.Management.SqlParser provides TSQL parsing functionality.
|
7 |
|
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.
|
7 |
|
Alternet.Studio.Scripter
AlterNET Scripter is a component library designed to integrate C#, Visual Basic, TypeScript, JavaScript, Python, and IronPython scripts into your WinForms and WPF .NET desktop applications. It allows extending the application logic by implementing custom functionality or automating custom tasks without recompiling and redeploying the application.
This package includes a ScriptRun component, which provides a framework for the execution of C# and Visual Basic scripts. It supports compiling scripts and projects into a dynamically linked library or a standalone executable, referencing application-defined objects and types in the script, and executing script code.
This multi-target package can be used with .NET applications targeting .NET Framework starting from 4.6.2 or .NET 6 / .NET 7 / .NET 8
More information about Scripter can be found here:
https://www.alternetsoft.com/products/scripter
Documentation and sample projects can be downloaded here:
https://www.alternetsoft.com/download
NOTE: This is a commercial software product and requires purchasing a license for legal usage. Please refer to our licensing FAQ here:
https://www.alternetsoft.com/faq#license
|
7 |
|
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
|
6 |
|
DevExpress.AspNetCore.Reporting
This package implements the functionality related to the DevExpress Report Designer and Report Viewer ASP.NET Core controls.
|
6 |
|
DevExpress.Blazor.Reporting.JSBasedControls.WebAssembly
This package contains the Report Designer and Document Viewer components for Blazor WebAssembly Hosted applications.
|
6 |
|
DevExpress.Blazor.Reporting.Viewer
This package implements the functionality related to the native Blazor DevExpress Report Viewer component.
|
6 |
|
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/be9c072e1c8a9e6701e34d796b1d68098d08feab.
|
6 |
|
Microsoft.SqlServer.Management.SqlParser
Microsoft.SqlServer.Management.SqlParser provides T-SQL parsing functionality.
|
6 |
.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.