Questa documentazione è stata archiviata e non viene gestita.

Classe VBCodeProvider

Aggiornamento: novembre 2007

Consente di accedere alle istanze del generatore e del compilatore di codice Visual Basic.

Spazio dei nomi:  Microsoft.VisualBasic
Assembly:  System (in System.dll)

[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public class VBCodeProvider : CodeDomProvider
/** @attribute PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust") */
/** @attribute PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust") */
public class VBCodeProvider extends CodeDomProvider
public class VBCodeProvider extends CodeDomProvider

Questa classe fornisce i metodi che possono essere utilizzati per recuperare istanze delle implementazioni di ICodeGenerator e ICodeCompiler di Visual Basic.

Nota:

In questa classe è presente una richiesta di collegamento e una richiesta di ereditarietà al livello di classe che si applica a tutti i membri. Se il chiamante immediato o la classe derivata non dispone di autorizzazione di attendibilità totale, viene generata un'eccezione SecurityException. Per maggiori dettagli sulle richieste di sicurezza, vedere Richieste di collegamento e Richieste di ereditarietà.

Nell'esempio riportato di seguito viene utilizzato il provider di codice C# o Visual Basic per compilare un file di origine. Nell'esempio viene verificata l'estensione di file di input e viene quindi utilizzato il corrispondente CSharpCodeProvider o VBCodeProvider per la compilazione. Il file di input viene compilato in un file eseguibile e gli eventuali errori di compilazione vengono visualizzati nella console.

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 = CodeDomProvider.CreateProvider("CSharp");
    }
    else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
    {
        provider = CodeDomProvider.CreateProvider("VisualBasic");
    }
    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;
}


  • SecurityAction.LinkDemand 

    per un'attendibilità totale per il chiamante immediato. Questa classe non può essere utilizzata da codice parzialmente attendibile.

  • SecurityAction.InheritanceDemand 

    per un'attendibilità totale per gli eredi. Questa classe non può essere ereditata da codice parzialmente attendibile.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0
Mostra: