GeneratorSupport 列舉

定義

定義識別項,用於判斷程式碼產生器是否支援特定類型的程式碼項目。Defines identifiers used to determine whether a code generator supports certain types of code elements.

此列舉具有 FlagsAttribute 個屬性允許以位元方式合併其成員值。

public enum class GeneratorSupport
[System.Flags]
[System.Serializable]
public enum GeneratorSupport
type GeneratorSupport = 
Public Enum GeneratorSupport
繼承
GeneratorSupport
屬性

欄位

ArraysOfArrays 1

指示產生器支援陣列的陣列。Indicates the generator supports arrays of arrays.

AssemblyAttributes 4096

指示產生器支援組件屬性 (Attribute)。Indicates the generator supports assembly attributes.

ChainedConstructorArguments 32768

指示產生器支援鏈結的建構函式 (Constructor) 引數。Indicates the generator supports chained constructor arguments.

ComplexExpressions 524288

指示產生器支援複雜運算式。Indicates the generator supports complex expressions.

DeclareDelegates 512

指示產生器支援委派 (Delegate) 宣告。Indicates the generator supports delegate declarations.

DeclareEnums 256

指示產生器支援列舉型別 (Enumeration) 宣告。Indicates the generator supports enumeration declarations.

DeclareEvents 2048

指示產生器支援事件宣告。Indicates the generator supports event declarations.

DeclareIndexerProperties 33554432

表示產生器支援索引子屬性的宣告。Indicates the generator supports the declaration of indexer properties.

DeclareInterfaces 1024

指示產生器支援介面宣告。Indicates the generator supports interface declarations.

DeclareValueTypes 128

指示產生器支援實值型別 (Value Type) 宣告。Indicates the generator supports value type declarations.

EntryPointMethod 2

指示產生器支援程式進入點 (Entry Point) 方法宣告。Indicates the generator supports a program entry point method designation. 建置 (Build) 可執行檔時可使用。This is used when building executables.

GenericTypeDeclaration 16777216

表示產生器支援泛型型別宣告。Indicates the generator supports generic type declarations.

GenericTypeReference 8388608

表示產生器支援泛型型別參考。Indicates the generator supports generic type references.

GotoStatements 4

指示產生器支援 Goto 陳述式。Indicates the generator supports goto statements.

MultidimensionalArrays 8

指示產生器支援參考多維度陣列。Indicates the generator supports referencing multidimensional arrays. 目前,CodeDom 無法用來執行個體化多維度陣列。Currently, the CodeDom cannot be used to instantiate multidimensional arrays.

MultipleInterfaceMembers 131072

指示產生器支援實作多個介面的成員宣告。Indicates the generator supports the declaration of members that implement multiple interfaces.

NestedTypes 65536

指示產生器支援巢狀型別 (Nested Type) 的宣告。Indicates the generator supports the declaration of nested types.

ParameterAttributes 8192

指示產生器支援參數屬性。Indicates the generator supports parameter attributes.

PartialTypes 4194304

表示產生器支援部分型別宣告。Indicates the generator supports partial type declarations.

PublicStaticMembers 262144

指示產生器支援公用靜態成員。Indicates the generator supports public static members.

ReferenceParameters 16384

指示產生器支援參考和輸出參數。Indicates the generator supports reference and out parameters.

Resources 2097152

表示產生器支援用 .NET Framework 資源進行編譯,Indicates the generator supports compilation with .NET Framework resources. 包括直接編譯到組件內部的預設資源,以及附屬組件中參考的資源。These can be default resources compiled directly into an assembly, or resources referenced in a satellite assembly.

ReturnTypeAttributes 64

指示產生器支援傳回值屬性宣告。Indicates the generator supports return type attribute declarations.

StaticConstructors 16

指示產生器支援靜態 (Static) 建構函式。Indicates the generator supports static constructors.

TryCatchStatements 32

指示產生器支援 try...catch 陳述式。Indicates the generator supports try...catch statements.

Win32Resources 1048576

指示產生器支援 Win32 資源的編譯 (Compilation)。Indicates the generator supports compilation with Win32 resources.

範例

下列範例說明如何使用CompilerParameters來指定各種編譯器設定和選項。The following example illustrates using CompilerParameters to specify various compiler settings and options.

static bool CompileCode( CodeDomProvider^ provider,
   String^ sourceFile,
   String^ exeFile )
{

   CompilerParameters^ cp = gcnew CompilerParameters;
   if ( !cp)  
   {
      return false;
   }

   // Generate an executable instead of 
   // a class library.
   cp->GenerateExecutable = true;
   
   // Set the assembly file name to generate.
   cp->OutputAssembly = exeFile;
   
   // Generate debug information.
   cp->IncludeDebugInformation = true;
   
   // Add an assembly reference.
   cp->ReferencedAssemblies->Add( "System.dll" );
   
   // Save the assembly as a physical file.
   cp->GenerateInMemory = false;
   
   // Set the level at which the compiler 
   // should start displaying warnings.
   cp->WarningLevel = 3;
   
   // Set whether to treat all warnings as errors.
   cp->TreatWarningsAsErrors = false;
   
   // Set compiler argument to optimize output.
   cp->CompilerOptions = "/optimize";
   
   // Set a temporary files collection.
   // The TempFileCollection stores the temporary files
   // generated during a build in the current directory,
   // and does not delete them after compilation.
   cp->TempFiles = gcnew TempFileCollection( ".",true );

   if ( provider->Supports( GeneratorSupport::EntryPointMethod ) )
   {
      // Specify the class that contains 
      // the main method of the executable.
      cp->MainClass = "Samples.Class1";
   }

   if ( Directory::Exists( "Resources" ) )
   {
      if ( provider->Supports( GeneratorSupport::Resources ) )
      {
         // Set the embedded resource file of the assembly.
         // This is useful for culture-neutral resources,
         // or default (fallback) resources.
         cp->EmbeddedResources->Add( "Resources\\Default.resources" );

         // Set the linked resource reference files of the assembly.
         // These resources are included in separate assembly files,
         // typically localized for a specific language and culture.
         cp->LinkedResources->Add( "Resources\\nb-no.resources" );
      }
   }

   // Invoke compilation.
   CompilerResults^ cr = provider->CompileAssemblyFromFile( cp, sourceFile );

   if ( cr->Errors->Count > 0 )
   {
      // Display compilation errors.
      Console::WriteLine( "Errors building {0} into {1}",
         sourceFile, cr->PathToAssembly );
      for each ( CompilerError^ ce in cr->Errors )
      {
         Console::WriteLine( "  {0}", ce->ToString() );
         Console::WriteLine();
      }
   }
   else
   {
      Console::WriteLine( "Source {0} built into {1} successfully.",
         sourceFile, cr->PathToAssembly );
   }

   // Return the results of compilation.
   if ( cr->Errors->Count > 0 )
   {
      return false;
   }
   else
   {
      return true;
   }
}
      public static bool CompileCode(CodeDomProvider provider, 
          String sourceFile, 
          String exeFile)
      {

          CompilerParameters cp = new CompilerParameters();

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

          // Set the assembly file name to generate.
          cp.OutputAssembly = exeFile;

          // Generate debug information.
          cp.IncludeDebugInformation = true;

          // Add an assembly reference.
          cp.ReferencedAssemblies.Add( "System.dll" );

          // Save the assembly as a physical file.
          cp.GenerateInMemory = false;

          // Set the level at which the compiler 
          // should start displaying warnings.
          cp.WarningLevel = 3;

          // Set whether to treat all warnings as errors.
          cp.TreatWarningsAsErrors = false;
          
          // Set compiler argument to optimize output.
          cp.CompilerOptions = "/optimize";

          // Set a temporary files collection.
          // The TempFileCollection stores the temporary files
          // generated during a build in the current directory,
          // and does not delete them after compilation.
          cp.TempFiles = new TempFileCollection(".", true);

          if (provider.Supports(GeneratorSupport.EntryPointMethod))
          {
              // Specify the class that contains 
              // the main method of the executable.
              cp.MainClass = "Samples.Class1";
          }

          if (Directory.Exists("Resources"))
          {
              if (provider.Supports(GeneratorSupport.Resources))
              {
                  // Set the embedded resource file of the assembly.
                  // This is useful for culture-neutral resources,
                  // or default (fallback) resources.
                  cp.EmbeddedResources.Add("Resources\\Default.resources");

                  // Set the linked resource reference files of the assembly.
                  // These resources are included in separate assembly files,
                  // typically localized for a specific language and culture.
                  cp.LinkedResources.Add("Resources\\nb-no.resources");
              }
          }

          // Invoke compilation.
          CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile);

          if(cr.Errors.Count > 0)
          {
              // Display compilation errors.
              Console.WriteLine("Errors building {0} into {1}",  
                  sourceFile, cr.PathToAssembly);
              foreach(CompilerError ce in cr.Errors)
              {
                  Console.WriteLine("  {0}", ce.ToString());
                  Console.WriteLine();
              }
          }
          else
          {
              Console.WriteLine("Source {0} built into {1} successfully.",
                  sourceFile, cr.PathToAssembly);
              Console.WriteLine("{0} temporary files created during the compilation.",
                  cp.TempFiles.Count.ToString());

          }
        
          // Return the results of compilation.
          if (cr.Errors.Count > 0)
          {
              return false;
          }
          else 
          {
              return true;
          }
      }
Public Shared Function CompileCode(ByVal provider As CodeDomProvider, _
ByVal sourceFile As String, ByVal exeFile As String) As Boolean

    Dim cp As New CompilerParameters()

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

    ' Set the assembly file name to generate.
    cp.OutputAssembly = exeFile

    ' Generate debug information.
    cp.IncludeDebugInformation = True

    ' Add an assembly reference.
    cp.ReferencedAssemblies.Add("System.dll")

    ' Save the assembly as a physical file.
    cp.GenerateInMemory = False

    ' Set the level at which the compiler 
    ' should start displaying warnings.
    cp.WarningLevel = 3

    ' Set whether to treat all warnings as errors.
    cp.TreatWarningsAsErrors = False

    ' Set compiler argument to optimize output.
    cp.CompilerOptions = "/optimize"

    ' Set a temporary files collection.
    ' The TempFileCollection stores the temporary files
    ' generated during a build in the current directory,
    ' and does not delete them after compilation.
    cp.TempFiles = New TempFileCollection(".", True)

    If provider.Supports(GeneratorSupport.EntryPointMethod) Then
        ' Specify the class that contains
        ' the main method of the executable.
        cp.MainClass = "Samples.Class1"
    End If


    If Directory.Exists("Resources") Then
        If provider.Supports(GeneratorSupport.Resources) Then
            ' Set the embedded resource file of the assembly.
            ' This is useful for culture-neutral resources,
            ' or default (fallback) resources.
            cp.EmbeddedResources.Add("Resources\Default.resources")

            ' Set the linked resource reference files of the assembly.
            ' These resources are included in separate assembly files,
            ' typically localized for a specific language and culture.
            cp.LinkedResources.Add("Resources\nb-no.resources")
        End If
    End If

    ' Invoke compilation.
    Dim cr As CompilerResults = _
        provider.CompileAssemblyFromFile(cp, sourceFile)

    If cr.Errors.Count > 0 Then
        ' Display compilation errors.
        Console.WriteLine("Errors building {0} into {1}", _
            sourceFile, cr.PathToAssembly)
        Dim ce As CompilerError
        For Each ce In cr.Errors
            Console.WriteLine("  {0}", ce.ToString())
            Console.WriteLine()
        Next ce
    Else
        Console.WriteLine("Source {0} built into {1} successfully.", _
            sourceFile, cr.PathToAssembly)
        Console.WriteLine("{0} temporary files created during the compilation.", _
                cp.TempFiles.Count.ToString())
    End If

    ' Return the results of compilation.
    If cr.Errors.Count > 0 Then
        Return False
    Else
        Return True
    End If
End Function 'CompileCode

備註

呼叫程式碼產生器的Supports方法時, 會使用這些識別碼來判斷程式碼產生器是否支援產生特定類型的程式碼。These identifiers are used when calling the Supports method of a code generator to determine whether the code generator supports generating certain types of code.

適用於

另請參閱