CSharpCodeProvider クラス
アセンブリ: System (system.dll 内)



C# または Visual Basic コード プロバイダを使用してソース ファイルをコンパイルする例を次に示します。この例では、入力ファイルの拡張子をチェックし、対応するコンパイル用 CSharpCodeProvider または VBCodeProvider を使用します。入力ファイルは実行可能ファイルにコンパイルされます。コンパイル エラーはすべてコンソールに表示されます。
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
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.MarshalByRefObject
System.ComponentModel.Component
System.CodeDom.Compiler.CodeDomProvider
Microsoft.CSharp.CSharpCodeProvider


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


CSharpCodeProvider メンバ
Microsoft.CSharp 名前空間
ICodeGenerator
ICodeCompiler
System.CodeDom
System.CodeDom.Compiler
- CSharpCodeProvider クラスのページへのリンク