Esporta (0) Stampa
Espandi tutto
Questo argomento non è stato ancora valutato - Valuta questo argomento

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
Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.