الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تبغي عمل Compile لبرنامجك بدون الفيجوال ستوديو؟؟؟

مغلق
بدأه OOP Emperor في 27 مايو 2007 · 6 رد · 1,046 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل تريد أن تعمل Compile لبرنامجك بدون الـفيجوال بيسك

الجديد في الدوت نت إنه بقى يعتمد على برامج أخرى لعمل Compile لبرنامجك.

يعني دلوقتي الفيجوال ما بقاش فيه Built-In Compiler –في رأيي إننا نسميه built-in- بقى فيه compiler خارجي للقيام بهذه المهمة.

الـ Compiler بتاع الفيجوال عبارة عن ملف صغير حجمه بالظبط عندي = 1.08 مب.

والباث بتاع الملف ده هو: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe.

طبعا من الملاحظ إن vbc اختصار لـ Visual Basic Compiler.

طب ازاي نتعامل مع الملف ده؟

الملف ده بنتعامل معاه بطريقة بسيطة جدا بتتوقف على فهمنا لمكونات مشروع الدوت نت.

يعني فهمنا لـيعني إيه Namespace يعني إيه عمل Import لـ Namespace.

يعني إيه إن الفورم مثلا بتبقى في الغالب متكونة من ثلاث ملفات: MyForm.vb و MyForm.Designer.vb و MyForm.resx.

وطبعا الملف الأول هو اللي فيه كودنا والتاني هو اللي فيه كود عمل Initialization أو بمعنى تاني ادبتاء أو خلق للـ Controls أو المكونات الموجودة في الفورم بتاعتنا.

والثالث بتاع الـ Resources الخاصة بالفورم.

مش موضوعنا ده كله.

كطريقة بدائية هنتعامل مع الـ Compiler ده عن طريق الدوس.

هنفتح شاشة موجه الأوامر Command Prompt عن طريقة Start->Run->cmd.exe مثلا.

وهنبدأ في تكوين الأمر بتاعنا علشان نعمل Compile لمشروع بدون الدوت نت.

هنكتب الأمر بتاع الـ Compiler: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe. وطبعا مش هنضغط Enter غير في الآخر خالص بعد آخر نقطة.

هنبدأ في كتابة الـ Arguments بتاعت الأمر ده وهنشرحهم أثناء كتابتهم.

1. /target:???: وللأمر ده اختياريت مشهورين winexe و library الأول ده بيتحكم في إن الناتج من عملية الـ Compiler يكون ملف exe بيشتغل على الويندوز –برنامج يعني- والتاني في إنه ينتج ملف dll مكتبة يعني.

يعني هيكون الأمر بتاعنا في مثالنا ده كده:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe

2. /out:<file>: والأمر ده بنحدد من خلاله اسم الملف الناتج.

في مثالنا ده هيكون أمرنا:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:MyApp.exe

3. /doc:???: وده بيتحكم في هل ينتج لنا الـ Compiler برضه ملف XML فيه شوية معلومات عن الـ Assembly بتاعتنا اللي احنا هننتجها.

4. /rootnamespace:???: وده بيتحكم في اسم الـ Namespace الرئيسية اللي بتشمل كل الـ Namespace الموجودة في برنامجنا.

في مثالنا ده هيكون أمرنا:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:MyApp.exe /rootnamespace:MyNamespace

5. /optimize+: والأمر ده لو ضفناه بيخلي برنامجنا الناتج بتاعنا يبقى معمولله Optimization بمعنى إنه يكون أسرع مثلا.

6. /reference:???,???,???: والأمر ده بيتحكم في الـ References اللي عايزين نضيفها في برنامجنا وكل Reference هنكتب الباث بتاع الملف بتاعه وهنفصل بين كل reference والتاني بفاصلة Comma (,).

في مثالنا ده هيكون أمرنا:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:MyApp.exe /rootnamespace:MyNamespace /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll, C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll

7. /imports:???,???,???: والأمر ده بيتحكم في الـ Namespaces اللي عاوزين نعمللها Import وكل Namespace هنكتب اسمها وهنفصل بين كل Namespace والتانية بفاصلة Comma (,).

في مثالنا ده هيكون أمرنا:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:MyApp.exe /rootnamespace:MyNamespace /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll, C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /imports:System,System.Drawing,System.Windows.Forms

طبعا ما ينفعش نعمل Import لـ Namespace مش معمول Reference للـ Assembly بتاعتها.

ولازم ناخد بالنا من حاجتين هما إننا ما ننساش نعمل reference للـ Assemblies اللي البرنامج محتاجها وكذلك نعمل import للـ Namespaces اللي البرنامج محتاجها.

8. /Main:???: والأمر ده بيتحكم في الفورم الأساسية أو حتى الـ Module للبرنامج اللي بيظهرها أول ما بيدأ وما ننساش لما بيجي نكتب اسمها نكتب الـ Namespace بتاعها يعني التدرج بتاعها.

في مثالنا ده هيكون أمرنا:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:MyApp.exe /rootnamespace:MyNamespace /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll, C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /imports:System,System.Drawing,System.Windows.Forms /Main:MyNamespace.MyForm

9. آخر وأسهل حاجة إننا نضيف الملفات بتاعة المشروع وما ننساش لو ملف اسمه فيه مسافة نحوطه بـ "" وهنفصل بين كل ملف والتاني بمسافة.

في مثالنا ده هيكون أمرنا:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:MyApp.exe /rootnamespace:MyNamespace /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /imports:System,System.Drawing,System.Windows.Forms /Main:MyNamespace.MyForm MyForm.vb "Another Form.vb" MyForm.Designer.vb "Another Form.designer.vb"

وفيه برضه أوامر تانية زي:

10. /Debug+: علشان نخلي البرنامج في وضع Debug.

11. /Resource:<file>: علشان نحدد الملفات Resources الخاصة.

12. /win32icon:<file>: لتحديد أيكونة البرنامج.

13. RemoveIntChecks+: لو ضفناها لو مثلا عندنا متغير من نوع Byte واديناله قيمة أكثر من 255 مش هيعمل Error وده نوع من الـ Optimization.

14. /nowarn: بيلغي جميع الـ Warnings التحذيرات.

15. /warnaserror+: لو ضفناه هيخلي كل الـ Warnings تبقى Errors.

16. /OptionExplicit+: لو ضفناه بيبقى مساوي جدا لكتابة Option Explicit On في بداية كل فورم أو كلاس.

17. /OptionCompare:???: الأمر ده بياخد قيمة إما text أو binary في الغالب وبيكون مساوي ساعتها لـ Option Compare Text/Binary في بداية كل كلاس.

وطبعا علشان ما أعقدش قرائي أهم أوامر هي:

1. target.

2. reference.

3. imports.

4. main.

5. إضافة ملفات المشروع.

أما باقي الأوامر ممكن ما تكتبهاش بس كان لازم أشرحها.

وممكن نستفيد من إننا ننتج Assemblies في وضع On-The-Fly بمعنى إننا ننشئ برامج من غير الفيجوال أثناء وقت التشغيل للبرنامج.

مثلا يكون برنامجنا نضيف فيه أوامر كتابة أكواد في ملفات:

C:\Windows\Temp\Class1.tmp و Class2.tmp و Class3.tmp و Module1.tmp.

ويكون أمرنا كالآتي:

Dim cmd As String
cmd = "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /target:winexe /out:myApp.exe /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /imports:System,System.Drawing,System.Windows.Forms /Main:module1 Module1.tmp Class1.tmp Class2.tmp Class3.tmp"
System.Diagnostics.Process.Start(cmd)
وبعدين
System.Diagnostics.Process.Start("C:\Windows\Temp\myApp.exe")

وعلى فكرة كل يوزر مصطب الفريم وورك على جهازه لازم vbc.exe يكون عنده.

#2

بسم الله ما شاء الله انت دخلتنا فى اهم حاجة لحدوث التكامل فى برامجنا وانا عرفت مسبقا انه يمكن كتابة ملف

واعطاءه امتداد .vb

فتجد ان الفيجوال بيسك تتعرف عليه وتتعامل معاه

يعنى ممكن نخلى العميل يضع خيارات ويعمل برنامجنا على كتابة اكواد ما يختار فى ملف تكست ثم جعل برنامجنا يغير امتداده الى .vb ثم يقوم برنامج vbc.exe بعمل الازم لتحويل هذه الملفات الى ملف تنفيذى

ولكنى حتى الان لم استطع البداية فاتمنى من الله ان يزيدك من علمه والتكرم بوضع مثال

وجزاك الله خيرا

#3

أنا ما حطيتش أي مثال مع الموضوع لإني بفكر في مثال يبقى ليه وظيفة يعني مش مجرد مثال لمجرد الشرح وخلاص.

وبالفعل البرنامج ده بيساعدنا جدااااااا في إننا ننشئ برامج أثناء وقت تشغيل البرنامج Runtime واليوزر ما يعرفش حاجة عنها خالص.

#4

الله يبارك لك استاذى فانت بحق استاذ فانا بحثت كثيرا ولم اجد فى المنتديات العربية شىء مثل هذا

ده موضوع جديد على

انا شاكر لك مجهودك الكبير واتمنى تثبيت هذا الموضوع الهام لنستفيد منه جميعا ولو احد منا لديه معلومات او مثال يضعه هنا للاستفادة

ولقد وجدت مثال مش فاهم منه حاجه لانه يعطى اخطاء للفورم اما الكلاسس او الموديول فيحولها لملف تنفيذى

واليكم المثال

Compiler.rar

#6

شكراَ اخي (OOP Emperor).. على هذا الموضوع الرائع بالفعل..

بالتوفيق...

((رحلة العودة الى العالم الافتراضي قد بدأت))

هذا الموضوع مغلق.

مواضيع مشابهة