الإرشادات التفصيلية: قم بإنشاء المهام موضعي
عادة ما يتم تاريخ الإنشاء المهام MSBuild بواسطة التحويل البرمجي لفئة التي تطبق ITaskالواجهة. بداية من الإصدار الرابع من برنامج.NET Framework، يمكنك إنشاء مهام موضعي في ملف مشروع. ليس لديك إلى إنشاء تجميع منفصل لاستضافة مهمة. لمزيد من المعلومات، راجع MSBuild موضعي المهام.
توضح هذه معاينة كيفية إنشاء وتشغيل هذه موضعي المهام:
مهمة التي وصلت لا يوجد إدخال أو إخراج معلمات.
مهمة يحتوي على معلمة إدخال واحدة و بدون معلمة الإخراج.
مهمة وجود معلمات إدخال اثنين، وواحد بإخراج المعلمة التي إرجاع على خاصية MSBuild.
مهمة التي وصلت معلمتين من معلمات إدخال، و واحد بإخراج المعلمة التي تقوم بإرجاع عنصر MSBuild.
إلى إنشاء وتشغيل المهام، قم باستخدام Visual Studio و نافذة تعجيل الأوامر Studio Visual Basic، كما يلي:
إنشاء ملف مشروع MSBuild باستخدام Visual Studio.
قم بتعديل ملف مشروع في Visual Studio إلى إنشاء مهمة مضمنة.
استخدام من اتصالات و تعجيل نافذة لبناء مشروع و بفحص النتائج.
إنشاء وتعديلها مشروع MSBuild
يعتمد النظام مشروع Visual Studio تشغيل MSBuild. ولذلك، يمكنك بنية بناء ملف مشروع باستخدام Visual Studio. في هذا القسم، تقوم بإنشاء Visual مشروع #C الملف. (يمكنك إنشاء ملف مشروع Visual أساسى بدلاً من ذلك. في the سياق of this tutorial, the difference between the الثاني مشروع ملفات هو ثانوي.)
إلى إنشاء و تعديل a ملف مشروع
في Visual Studio ، في ملفالقائمة، انقر فوق جديد ثم انقر فوق مشروع.
في the جديد مشروع حوار صندوق, تحديد the Visual C# نوع مشروع, و then تحديد the تطبيق Windows Forms قالب. في the اسم صندوق, نوع InlineTasks. نوع a الموقع for the الحل, for مثال, D:\. Ensure that إنشاء الدليل for الحل هو محدد, إضافة إلى التحكم بالمصادر هو cleared, و الحل اسم هو InlineTasks.
انقر موافق إلى إنشاء the ملف مشروع.
في الحل مستكشف, يمين-انقر the InlineTasks مشروع عقدة, و then انقر Unload مشروع.
انقر نقراً مزدوجاً فوق العقدة مشروع مرة أخرى، و ثم انقر فوق تحرير InlineTasks.csproj.
يظهر ملف مشروع في تعليمات برمجية المحرر.
إضافة أساسى مرحبا مهمة
الآن، إضافة إلى ملف مشروع أساسى مهمة التي يعرض الرسالة "مرحبا، العالم!" أيضا إضافة هدف TestBuild افتراضية لاستدعاء مهمة.
إلى إضافة مهمة الترحيب أساسية
في جذر Projectالعقدة، تغيير DefaultTargetsسمة إلى TestBuild أن الناتج Projectعقدة يجب أن تتشابه مع ذلك مثال:
<Project ToolsVersion="4.0" DefaultTargets="TestBuild" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
قم بإضافة المهام المضمنة التالية والهدف للمشروع ملف فقط قبل </Project>علامة.
<UsingTask TaskName="Hello" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" > <ParameterGroup /> <Task> <Code Type="Fragment" Language="cs"> Log.LogMessage("Hello, world!", MessageImportance.High); </Code> </Task> </UsingTask> <Target Name="TestBuild"> <Hello /> </Target>
قم بحفظ ملف المشروع.
Th هو التعليمة البرمجية إنشاء مهام مضمنة التي هو باسم مرحبا وعدم وجود معلمات، مراجع، أو Usingعبارات. مهمة مرحبا يحتوي تشغيل سطر واحد فقط من تعليمات برمجية، والذي يعرض رسالة الترحيب تشغيل جهاز التسجيل الافتراضي، وإطار وحدة التحكم بشكل عام.
قم بتشغيل مهمة مرحبا
قم بتشغيل MSBuild باستخدام نافذة تعجيل الأوامر إلى إنشاء مهمة مرحبا و إلى معالجة الهدف TestBuild يستدعي ذلك.
إلى تشغيل مهمة مرحبا
انقر فوق ابدأوانقر فوق الجميع البرامجوثم حدد موقع أدوات Studio Visual Basic مجلد انقر فوق من تعجيل الأوامر Studio Visual Basic.
في نافذة تعجيل الأوامر ، حدد موقع المجلد الذي يتضمن ملف مشروع، في هذه الحالة، D:\InlineTasks\InlineTasks\.
نوع msbuildبدون رموز التبديل للأمر، ومن ثم اضغط Enter الزر. بشكل افتراضي، ذلك بناء InlineTasks.csproj ملف ومعالجة الهدف الافتراضي TestBuild، قم باستدعاء مهمة مرحبا.
افحص الإخراج في الأمر تعجيل نافذة . يجب أن تشاهد هذا السطر:
Hello, world!
ملاحظة
إذا لم تتمكن من مشاهدة الرسالة الترحيب، حاول حفظ ملف مشروع مرة أخرى و ثم قم بتشغيل مهمة مرحبا.
بواسطة المتبادلة بين محرر تعليمات برمجية و نافذة تعجيل الأوامر، يمكنك تغيير ملف مشروع ومشاهدة نتائج بسرعة.
تعريف مهمة ارتداد
إنشاء موضعي المهمة التي تقبل معلمة سلسلة وعرض السلسلة تشغيل جهاز التسجيل الافتراضي.
إلى تعريف مهمة ارتداد
في محرر تعليمات برمجية، قم باستبدال الهدف و TestBuild مرحبا مهمة باستخدام تعليمات برمجية التالية.
<UsingTask TaskName="Echo" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" > <ParameterGroup> <Text Required="true" /> </ParameterGroup> <Task> <Code Type="Fragment" Language="cs"> Log.LogMessage(Text, MessageImportance.High); </Code> </Task> </UsingTask> <Target Name="TestBuild"> <Echo Text="Greetings!" /> </Target>
في نافذة تعجيل الأوامر، نوع msbuildبدون رموز التبديل للأمر، ومن ثم اضغط Enter الزر. بشكل افتراضي، وهذا بمعالجة الهدف الافتراضي TestBuild، قم باستدعاء مهمة ارتداد.
افحص الإخراج في الأمر تعجيل نافذة . يجب أن تشاهد هذا السطر:
Greetings!
Th هو يعرف تعليمات برمجية مضمنة المهام التي هو باسم الارتداد ونوع واحد فقط تطلبته معلمة إدخال نص. بواسطة الإعدادات الافتراضية، تكون معلمات من النوع النظام.سلسلة. القيمة معلمة نص هو عند استدعاء الهدف TestBuild مهمة ارتداد.
تعريف مهمة Adder
إنشاء موضعي المهمة التي تضيف معلمتين صحيحاً والمجموع الخاص بهم كخاصية MSBuild emits.
إلى تعريف مهمة Adder
في محرر تعليمات برمجية، قم باستبدال الهدف و TestBuild صدى مهمة باستخدام تعليمات برمجية التالية.
<UsingTask TaskName="Adder" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" > <ParameterGroup> <A ParameterType="System.Int32" Required="true" /> <B ParameterType="System.Int32" Required="true" /> <C ParameterType="System.Int32" Output="true" /> </ParameterGroup> <Task> <Code Type="Fragment" Language="cs"> C = A + B; </Code> </Task> </UsingTask> <Target Name="TestBuild"> <Adder A="4" B="5"> <Output PropertyName="Sum" TaskParameter="C" /> </Adder> <Message Text="The sum is $(Sum)" Importance="High" /> </Target>
في نافذة تعجيل الأوامر، نوع msbuildبدون رموز التبديل للأمر، ومن ثم اضغط Enter الزر. بشكل افتراضي، وهذا بمعالجة الهدف الافتراضي TestBuild، قم باستدعاء مهمة ارتداد.
افحص الإخراج في الأمر تعجيل نافذة . يجب أن تشاهد هذا السطر:
The sum is 9
Th هو يعرف تعليمات برمجية مضمنة المهام التي هو باسم Adder الثاني تطلبته العدد الصحيح معلمات إدخال، A و B، وإخراج رقمي واحد المعلمة، ت. يضيف مهمة Adder اثنين إدخال معلمات و إرجاع جمع في معلمة الإخراج. المجموع هو تصدر ك خاصية MSBuild Sum. قيم معلمات إدخال التعيين عند استدعاء الهدف TestBuild Adder مهمة.
تعريف مهمة RegX
إنشاء مهمة عمل مضمنة التي تقبل مجموعة عنصر تعبير عادي، وتقوم بإرجاع قائمة بكافة عناصر التي تحتوي على محتوى الملف يطابق التعبير.
إلى تعريف مهمة RegX
في محرر تعليمات برمجية، استبدل Adder مهمة و TestBuild الهدف باستخدام تعليمات برمجية التالية.
<UsingTask TaskName="RegX" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" > <ParameterGroup> <Expression Required="true" /> <Files ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" /> <Result ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" /> </ParameterGroup> <Task> <Using Namespace="System.Text.RegularExpressions"/> <Code Type="Fragment" Language="cs"> <![CDATA[ if (Files.Length > 0) { Result = new TaskItem[Files.Length]; for (int i = 0; i < Files.Length; i++) { ITaskItem item = Files[i]; string path = item.GetMetadata("FullPath"); using(StreamReader rdr = File.OpenText(path)) { if (Regex.Match(rdr.ReadToEnd(), Expression).Success) { Result[i] = new TaskItem(item.ItemSpec); } } } } ]]> </Code> </Task> </UsingTask> <Target Name="TestBuild"> <RegX Expression="public|protected" Files="@(Compile)"> <Output ItemName="MatchedFiles" TaskParameter="Result" /> </RegX> <Message Text="Input files: @(Compile)" Importance="High" /> <Message Text="Matched files: @(MatchedFiles)" Importance="High" /> </Target>
في نافذة تعجيل الأوامر، نوع msbuildبدون رموز التبديل للأمر، ومن ثم اضغط Enter الزر. بشكل افتراضي، وهذا معالجات هدف الافتراضي TestBuild، قم باستدعاء مهمة RegX.
افحص الإخراج في الأمر تعجيل نافذة . يجب أن تشاهد هذه الأسطر:
Input files: Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
Matched files: Form1.cs;Form1.Designer.cs;Properties\Settings.Designer.cs
Th هو يعرف تعليمات برمجية مضمنة المهام التي هو باسم RegX ولديه هذه المعلمات الثلاث:
Expressionهو مطلوب إدخال معلمة سلسلة الذي يحتوي على القيمة التي هو تعبير عادي أن تتطابق. في هذا المثال، تعبير مطابقة الكلمات "عام" أو "المحميه".
Filesهو عنصر مطلوب lهوt معلمة إدخال الذي يحتوي على قيمة التي هو lهوt الملفات ليتم البحث فيه عن التطابق. في هذا المثال، Filesتعيين إلى ترجمة العنصر، التي تسرد المصدر المشروع ملفات.
Resultهو معلمة إخراج له قيمة قائمة الملفات التي تحتوي على المحتويات التي تطابق العادية تعبير.
يتم تعيين القيمة معلمات إدخال عند استدعاء الهدف TestBuild مهمة RegX. مهمة RegX بقراءة كل ملف وتقوم بإرجاع قائمة بالملفات التي تطابق تعبير عادي. يتم إرجاع هذه القائمة كـ Resultمعلمة الإخراج، والذي هو صدور كـ العنصر MSBuild MatchedFiles.
محجوز لمعالجة حرف/ حروف
يعالج محلل MSBuild بالمهام المضمنة ك XML. حرف/ حروف التي تم محجوزها المعني بتنسيق XML، على سبيل المثال، "<" و">"، تم الكشف عنها ومعالجة كـ لو كانوا XML، وليس رمز المصدر.NET. إلى تضمين حرف/ حروف المحجوزة في تعبيرات تعليمات برمجية مثل Files.Length > 0، الكتابة Codeالعنصر حيث يتم تضمين محتوياتها في تعبير CDATA، كما يلي:
<Code Type="Fragment" Language="cs">
<![CDATA[
// Your code goes here.
]]>
</Code>