كيفية ترجمة التعليمات البرمجية برمجياً باستخدام برنامج التحويل البرمجي Visual Basic.NET أو Visual Basic 2005

للحصول على إصدار Microsoft Visual C#.NET من هذه المقالة، راجع
304655 .

تشير هذه المقالة إلى مساحة الاسم Microsoft.NET Framework مكتبة الفئة التالية:
  • System.CodeDom.Compiler

ملخص

كشف برنامج.NET Framework الفئات التي تسمح لك للوصول برمجياً إلى Visual Basic.NET أو تحويل برمجي للغة Visual Basic 2005. قد يكون ذلك أيضا مفيداً إذا كنت تريد كتابة المرافق ترجمة التعليمات البرمجية الخاصة بك. توفر هذه المقالة نموذج التعليمات البرمجية التي تسمح لك بترجمة التعليمات البرمجية من مصدر نص. يمكنك التطبيق أما مجرد بناء الملف التنفيذي أو إنشاء الملف التنفيذي وتشغيله. يتم عرض أي أخطاء تحدث أثناء عملية التحويل البرمجي في النموذج.

مزيد من المعلومات

الخطوة 1: المتطلبات

  • Visual Studio.NET أو Visual Studio 2005
  • برنامج التحويل البرمجي Visual Basic.NET لغة أو برنامج التحويل البرمجي Visual Basic 2005 اللغة

الخطوة 2: كيفية ترجمة التعليمات البرمجية برمجياً

يوفر.NET Framework واجهة تنفيذ برنامج التحويل البرمجي إيكوديكومبيلير. تطبق هذه الواجهة فئة فبكوديبروفيدير ويوفر الوصول إلى مثيلات منشئ التعليمات البرمجية ل Visual Basic والمحول البرمجي التعليمات البرمجية. إنشاء مثيل من فبكوديبروفيدير النموذج التالي ويستخدم للحصول على مرجع إلى واجهة إيكوديكومبيلير.

Dim codeProvider As New VBCodeProvider()Dim icc As ICodeCompiler = codeProvider.CreateCompiler


بعد الحصول على مرجع إلى واجهة إيكوديكومبيلير، يمكنك استخدامه للتحويل البرمجي للتعليمات البرمجية المصدر الخاصة بك. تمرير المعلمات إلى المحول البرمجي باستخدام فئة كومبيليرباراميتيرس . إليك مثال:
Dim parameters As New CompilerParameters()Dim results As CompilerResults

parameters.GenerateExecutable = True
parameters.OutputAssembly = Output
results = icc.CompileAssemblyFromSource(parameters, SourceText)


تستخدم التعليمة البرمجية أعلاه كائن كومبيليرباراميتيرس لتعرف المحول البرمجي الذي تريد إنشاء ملف قابل للتنفيذ (على عكس DLL) والتي تريد إخراج التجميع الناتج إلى القرص. يتم استدعاء كومبيليسيمبليفرومسورسي حيث يحصل برمجياً التجميع الخاص بك. يأخذ هذا الأسلوب الكائن معلمات وشفرة المصدر، وسلسلة. بعد التحويل البرمجي للتعليمات البرمجية الخاصة بك يمكنك التحقق لمعرفة ما إذا كان هناك أي أخطاء التحويل البرمجي. نحن نستخدم قيمة الإرجاع من كومبيليسيمبليفرومسورسي، وكائن كومبيليريسولتس . يحتوي هذا الكائن على مجموعة أخطاء، الذي يحتوي على أية أخطاء تحدث أثناء التحويل البرمجي.
If results.Errors.Count > 0 Then   'There were compiler errors
Dim CompErr As CompilerError
For Each CompErr In results.Errors
textBox2.Text = textBox2.Text & _
"Line number " & CompErr.Line & _
", Error Number: " & CompErr.ErrorNumber & _
", '" & CompErr.ErrorText & ";" & _
Environment.NewLine & Environment.NewLine
Next
End If



هناك خيارات أخرى لترجمة مثل التحويل البرمجي من ملف. يمكنك أيضا الدفعة الترجمة، مما يعني ترجمة ملفات أو مصادر متعددة في نفس الوقت. تتوفر معلومات إضافية حول هذه الفئات على MSDN على إنترنت:

الخطوة 3: نموذج خطوة بخطوة

  1. إنشاء تطبيق Windows 2005 Visual Basic أو Visual Basic.NET جديدة. يتم إنشاء Form1 افتراضياً.
  2. في إطار "التعليمات البرمجية" Form1، استبدال كل النص الموجود مع التعليمات البرمجية التالية:
    Option Strict OnImports System.CodeDom.Compiler


    Public Class Form1
    Inherits System.Windows.Forms.Form

    #Region " Windows Form Designer generated code "

    Public Sub New()
    MyBase.New()

    'This call is required by the Windows Form Designer.
    InitializeComponent()

    'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
    If Not (components Is Nothing) Then
    components.Dispose()
    End If
    End If
    MyBase.Dispose(disposing)
    End Sub
    Friend WithEvents textBox1 As System.Windows.Forms.TextBox
    Friend WithEvents button1 As System.Windows.Forms.Button
    Friend WithEvents textBox2 As System.Windows.Forms.TextBox
    Friend WithEvents button2 As System.Windows.Forms.Button

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.Container

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    Me.textBox2 = New System.Windows.Forms.TextBox()
    Me.textBox1 = New System.Windows.Forms.TextBox()
    Me.button1 = New System.Windows.Forms.Button()
    Me.button2 = New System.Windows.Forms.Button()
    Me.SuspendLayout()
    '
    'textBox2
    '
    Me.textBox2.BackColor = System.Drawing.SystemColors.Control
    Me.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None
    Me.textBox2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    Me.textBox2.ForeColor = System.Drawing.SystemColors.WindowText
    Me.textBox2.Location = New System.Drawing.Point(264, 56)
    Me.textBox2.Multiline = True
    Me.textBox2.Name = "textBox2"
    Me.textBox2.Size = New System.Drawing.Size(240, 232)
    Me.textBox2.TabIndex = 2
    Me.textBox2.Text = ""
    '
    'textBox1
    '
    Me.textBox1.Location = New System.Drawing.Point(16, 48)
    Me.textBox1.Multiline = True
    Me.textBox1.Name = "textBox1"
    Me.textBox1.Size = New System.Drawing.Size(240, 240)
    Me.textBox1.TabIndex = 0
    Me.textBox1.Text = "textBox1"
    '
    'button1
    '
    Me.button1.Location = New System.Drawing.Point(368, 304)
    Me.button1.Name = "button1"
    Me.button1.TabIndex = 1
    Me.button1.Text = "Build"
    '
    'button2
    '
    Me.button2.Location = New System.Drawing.Point(456, 304)
    Me.button2.Name = "button2"
    Me.button2.TabIndex = 1
    Me.button2.Text = "Run"
    '
    'Form1
    '
    Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
    Me.ClientSize = New System.Drawing.Size(544, 333)
    Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.button2, Me.textBox1, Me.button1, Me.textBox2})
    Me.Name = "Form1"
    Me.Text = "Form1"
    Me.ResumeLayout(False)

    End Sub

    #End Region

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click, button2.Click
    Dim codeProvider As New VBCodeProvider()
    Dim icc As ICodeCompiler = codeProvider.CreateCompiler
    Dim Output As String = "Out.exe"
    Dim ButtonObject As Button = CType(sender, Button)

    textBox2.Text = ""
    Dim parameters As New CompilerParameters()
    Dim results As CompilerResults
    'Make sure we generate an EXE, not a DLL
    parameters.GenerateExecutable = True
    parameters.OutputAssembly = Output
    results = icc.CompileAssemblyFromSource(parameters, textBox1.Text)

    If results.Errors.Count > 0 Then
    'There were compiler errors
    textBox2.ForeColor = Color.Red
    Dim CompErr As CompilerError
    For Each CompErr In results.Errors
    textBox2.Text = textBox2.Text & _
    "Line number " & CompErr.Line & _
    ", Error Number: " & CompErr.ErrorNumber & _
    ", '" & CompErr.ErrorText & ";" & _
    Environment.NewLine & Environment.NewLine
    Next
    Else
    'Successful Compile
    textBox2.ForeColor = Color.Blue
    textBox2.Text = "Success!"
    'If we clicked run then launch the EXE
    If ButtonObject.Text = "Run" Then Process.Start(Output)
    End If

    End Sub

    End Class

    ملاحظة: يجب تغيير التعليمات البرمجية في Visual Basic 2005. إذا قمت بإنشاء نموذج جديد يسمى Form1 في Visual Basic 2005، يكون لديك ملف Form1.vb للتعليمات البرمجية الخاصة بك وملف Form1.Designer.vb يحتوي على الجزء الذي تم إنشاؤه تلقائياً. مصمم نماذج Windows يستخدم الكلمة الأساسية الجزئية لتقسيم تطبيق Form1 إلى ملفين مستقلين. هذا يمنع رمز تصدر مصمم يتم interspersed مع التعليمات البرمجية الخاصة بك. لمزيد من المعلومات حول التحسينات لغة Visual Basic 2005، قم بزيارة موقع Microsoft التالي على الويب:لمزيد من المعلومات حول فئات جزئية ومصمم نماذج Windows، قم بزيارة موقع Microsoft التالي على الويب:
  3. قم بتشغيل المشروع. بعد تحميل Form1، انقر فوق الزر إنشاء . لاحظ أن تحصل على اثنين من أخطاء برنامج التحويل البرمجي.
  4. وبعد ذلك، نسخ التعليمة البرمجية التالية إلى مربع نص أو استبدال أي نص موجود:
    Imports System
    Module Module1

    Sub Main()
    Console.WriteLine("Hello World!")
    Console.WriteLine("Press ENTER")
    Console.ReadLine()
    End Sub

    End Module

  5. انقر فوق إنشاء جديد. يجب أن يكون التحويل البرمجي نجاح.
  6. انقر فوق تشغيل ، وسيتم ترجمة التعليمات البرمجية وتشغيل الملف التنفيذي الناتج. التحويل البرمجي يقوم بإنشاء ملف قابل للتنفيذ يسمى "Out.exe" في نفس مجلد التطبيق الذي تقوم بتشغيله.

    ملاحظة: يمكنك تعديل التعليمات البرمجية في مربع النص لمشاهدة أخطاء برنامج التحويل البرمجي مختلفة. على سبيل المثال، حذف أحد الأقواس وإعادة بناء التعليمات البرمجية.
  7. وأخيراً، تعديل التعليمات البرمجية في مربع النص لإخراج آخر سطر من النص إلى إطار وحدة التحكم. انقر فوق تشغيل لعرض الناتج.
خصائص

رقم الموضوع: 304654 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات