请单击以进行评分并提供反馈
MSDN
MSDN Library
.NET 开发
先前版本
Microsoft.CSharp
全部折叠/全部展开 全部折叠
此页面仅适用于
Microsoft Visual Studio 2005/.NET Framework 2.0

同时提供下列产品的其他版本:
.NET Framework 类库
CSharpCodeProvider 类

提供对 C# 代码生成器和代码编译器的实例的访问。

命名空间:Microsoft.CSharp
程序集:System(在 system.dll 中)

Visual Basic(声明)
Public Class CSharpCodeProvider
    Inherits CodeDomProvider
Visual Basic(用法)
Dim instance As CSharpCodeProvider
C#
public class CSharpCodeProvider : CodeDomProvider
C++
public ref class CSharpCodeProvider : public CodeDomProvider
J#
public class CSharpCodeProvider extends CodeDomProvider
JScript
public class CSharpCodeProvider extends CodeDomProvider

此类提供可用来检索 C# ICodeGeneratorICodeCompiler 实现的实例的方法。

下面的示例使用 C# 或 Visual Basic 代码提供程序编译源文件。该示例检查输入文件扩展名并使用相应的 CSharpCodeProviderVBCodeProvider 进行编译。输入文件被编译为可执行文件,并会在控制台上显示所有编译错误。

Visual Basic
Public Shared Function CompileExecutable(sourceName As String) As Boolean
    Dim sourceFile As FileInfo = New FileInfo(sourceName)
    Dim provider As CodeDomProvider = Nothing
    Dim compileOk As Boolean = False

    ' Select the code provider based on the input file extension.
    If sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".CS"

        provider = New Microsoft.CSharp.CSharpCodeProvider()

    ElseIf sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".VB"

        provider = New Microsoft.VisualBasic.VBCodeProvider()

    Else
        Console.WriteLine("Source file must have a .cs or .vb extension")
    End If

    If Not provider Is Nothing

        ' Format the executable file name.
        ' Build the output assembly path using the current directory
        ' and <source>_cs.exe or <source>_vb.exe.

        Dim exeName As String = String.Format("{0}\{1}.exe", _
            System.Environment.CurrentDirectory, _
            sourceFile.Name.Replace(".", "_"))

        Dim cp As CompilerParameters = new CompilerParameters()

        ' Generate an executable instead of 
        ' a class library.
        cp.GenerateExecutable = True

        ' Specify the assembly file name to generate.
        cp.OutputAssembly = exeName
    
        ' Save the assembly as a physical file.
        cp.GenerateInMemory = False
    
        ' Set whether to treat all warnings as errors.
        cp.TreatWarningsAsErrors = False
 
        ' Invoke compilation of the source file.
        Dim cr As CompilerResults = provider.CompileAssemblyFromFile(cp, _
            sourceName)
    
        If cr.Errors.Count > 0
            ' Display compilation errors.
            Console.WriteLine("Errors building {0} into {1}", _
                sourceName, cr.PathToAssembly)

            Dim ce As CompilerError
            For Each ce In cr.Errors
                Console.WriteLine("  {0}", ce.ToString())
                Console.WriteLine()
            Next ce
        Else
            ' Display a successful compilation message.
            Console.WriteLine("Source {0} built into {1} successfully.", _
                sourceName, cr.PathToAssembly)
        End If
      
        ' Return the results of the compilation.
        If cr.Errors.Count > 0
            compileOk = False
        Else 
            compileOk = True
        End If
    End If
    return compileOk

End Function
C#
public static bool CompileExecutable(String sourceName)
{
    FileInfo sourceFile = new FileInfo(sourceName);
    CodeDomProvider provider = null;
    bool compileOk = false;

    // Select the code provider based on the input file extension.
    if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS")
    {
        provider = new Microsoft.CSharp.CSharpCodeProvider();
    }
    else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
    {
        provider = new Microsoft.VisualBasic.VBCodeProvider();
    }
    else 
    {
        Console.WriteLine("Source file must have a .cs or .vb extension");
    }

    if (provider != null)
    {

        // Format the executable file name.
        // Build the output assembly path using the current directory
        // and <source>_cs.exe or <source>_vb.exe.
 
        String exeName = String.Format(@"{0}\{1}.exe", 
            System.Environment.CurrentDirectory, 
            sourceFile.Name.Replace(".", "_"));

        CompilerParameters cp = new CompilerParameters();

        // Generate an executable instead of 
        // a class library.
        cp.GenerateExecutable = true;

        // Specify the assembly file name to generate.
        cp.OutputAssembly = exeName;
    
        // Save the assembly as a physical file.
        cp.GenerateInMemory = false;
    
        // Set whether to treat all warnings as errors.
        cp.TreatWarningsAsErrors = false;
 
        // Invoke compilation of the source file.
        CompilerResults cr = provider.CompileAssemblyFromFile(cp, 
            sourceName);
    
        if(cr.Errors.Count > 0)
        {
            // Display compilation errors.
            Console.WriteLine("Errors building {0} into {1}",  
                sourceName, cr.PathToAssembly);
            foreach(CompilerError ce in cr.Errors)
            {
                Console.WriteLine("  {0}", ce.ToString());
                Console.WriteLine();
            }
        }
        else
        {
            // Display a successful compilation message.
            Console.WriteLine("Source {0} built into {1} successfully.",
                sourceName, cr.PathToAssembly);
        }
      
        // Return the results of the compilation.
        if (cr.Errors.Count > 0)
        {
            compileOk = false;
        }
        else 
        {
            compileOk = true;
        }
    }
    return compileOk;
}
System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.CodeDom.Compiler.CodeDomProvider
        Microsoft.CSharp.CSharpCodeProvider
此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0、1.1、1.0
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker