مشاركة عبر


الإرشادات التفصيلية: قم بإنشاء ‏‫MSBuild ملف مشروع من التسويد

برمجة اللغات التي تستهدف من برنامج.NET Framework، على سبيل المثال، Visual C# و Visual أساسى، استخدام ملفات مشروع ‏‫MSBuild لوصف و عنصر تحكم تطبيق ببنية العملية. عند استخدام برنامج Vهوual Studio لإنشاء ملف مشروع ‏‫MSBuild، XML المناسب هو تمت الإضافة إلى الملف تلقائياً. على الرغم من ذلك، قد تجد من المفيد فهم كيفية XML هو منظمة وكيف يمكن تغييره للتحكم بناء. توضح هذه معاينة كيفية إنشاء ملف مشروع أساسية بشكل متزايد، باستخدام نص فقط محرر. معاينة اتباع الخطوات التالية:

  • إنشاء الأدنى ملف مصدر التطبيق.

  • قم بإنشاء ملف مشروع الأدنى ‏‫MSBuild.

  • قم بتوسيع متغير بيئة مسار إلى تضمين ‏‫MSBuild.

  • بنية تطبيق بواسطة استخدام ملف مشروع.

  • إضافة خصائص إلى عنصر تحكم الإنشاء.

  • عنصر تحكم البنية عن طريق تغيير قيم الخصائص.

  • إضافة الأهداف للإنشاء.

  • التحكم بنية بواسطة تحديد الأهداف.

  • بنية المتزايد.

توضح هذه معاينة كيفية إلى بناء مشروع في تعجيل الأوامر وفحصها. للحصول على مزيد من المعلومات حول ‏‫MSBuild وكيفية إلى تشغيل ‏‫MSBuild في تعجيل الأوامر، راجع الإرشادات التفصيلية: استخدام ‏‫MSBuild.

لاستكمال معاينة، يجب أن يكون لديك برنامج.NET Framework (الإصدار 2.0 أو 3.5 4.0) تثبيت لأنه يتضمن ‏‫MSBuild و Visual C# المترجم، وهي عبارة عن مطلوب للإرشادات التفصيلية.

قم بإنشاء أحد تطبيقات الحد الأدنى

يظهر هذا المقطع كيفية إلى إنشاء أدنى Visual C# تطبيق مصدر ملف باستخدام ediإلىr نص.

إلى إنشاء تطبيق الحد الأدنى

  1. في تعجيل الأوامر، قم بالاستعراض إلى مجلد الموقع تريد إنشاء تطبيق، على سبيل المثال،\My مستندات\أو\سطح المكتب\.

  2. نوع md HelloWorldلإنشاء مجلد فرعي باسم\HelloWorld\.

  3. اكتب cd HelloWorldللتغيير إلى الجديدة مجلد.

  4. قم بتشغيل برنامج "المفكرة" أو محرر نص آخر، ومن ثم اكتب ما يلي تعليمات برمجية.

    using System;
    
    class HelloWorld
    {
        static void Main()
        {
    #if DebugConfig
            Console.WriteLine("WE ARE IN THE DEBUG CONFIGURATION");
    #endif
    
            Console.WriteLine("Hello, world!");
        }
    }
    
  5. قم بحفظ هذه التعليمات البرمجية المصدر ملف وتسميته Helloworld.cs.

  6. بنية تطبيق بواسطة كتابة csc helloworld.csفي تعجيل الأوامر.

  7. اختبار تطبيق بواسطة كتابة helloworldفي تعجيل الأوامر.

    **Hello, world!**يجب أن يتم عرض رسالة.

  8. يحذف تطبيق بواسطة كتابة del helloworld.exeفي تعجيل الأوامر.

إنشاء ‏‫MSBuild الحد الأدنى ملف مشروع

والآن بعد أن لديك ملف مصدر تطبيق الحد أدنى، يمكنك بنية ملف مشروع الحد أدنى إلى بنية التطبيق. يحتوي ملف مشروع هذا على العناصر التالية:

  • مطلوب الجذر Projectعقدة.

  • ItemGroupعقدة إلى تحتوي على عناصر العنصر.

  • عنصر عنصر الذي يشير إلى مصدر تطبيق ملف.

  • Targetعقدة إلى تحتوي على مهام مطلوبة إلى بناء تطبيق.

  • على t askعنصر إلى يبدأ المحول البرمجي Visual C# إلى بناء تطبيق.

إلى إنشاء ملف مشروع ‏‫MSBuild الحد أدنى

  1. في محرر نص، قم باستبدال النص الموجود بواسطة استخدام هذين:

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    </Project>
    
  2. قم بإدراج هذا ItemGroupعقدة كـ عنصر فرع Projectعقدة:

      <ItemGroup>
        <Compile Include="helloworld.cs" />
      </ItemGroup>
    

    لاحظ أنه هذا ItemGroupيحتوي على عنصر العنصر.

  3. قم بإضافة Targetعقدة كـ عنصر فرع Projectعقدة. اسم العقدة بنية.

      <Target Name="Build">
      </Target>
    
  4. قم بإدراج هذا العنصر tكـk كـ عنصر فرع ل Targetعقدة:

        <Csc Sources="@(Compile)"/>
    
  5. قم بحفظ ملف مشروع هذا و تسمية Helloworld.csproj.

يجب أن تتشابه مع ملف مشروع أدنى التعليمة البرمجية التالية:

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile Include="helloworld.cs" />
  </ItemGroup>
  <Target Name="Build">
    <Csc Sources="@(Compile)"/>  
  </Target>
</Project>

يتم تنفيذ المهام بهدف بنية بشكل تسلسلي. في ترتيب هو الحالة Vهوual C# المترجم Cscمهمة هو مهمة فقط. يتوقع قائمة بملفات المصدر إلى يتم إعطاء يحول برمجياً، وذلك بالقيمة Compileالعنصر. Compileعنصر يشير مصدر واحد فقط ملف، Helloworld.cs.

ملاحظة

في العنصر عنصر، يمكنك استخدم حرف بدل العلامة النجمية (*) الإشارة إلى الجميع الملفات التي لها ملحق اسم الملف.cs، كما يلي:

<Compile Include="*.cs" />

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

توسيع مسار إلى تضمين ‏‫MSBuild

قبل أن يمكنك الوصول إلى ‏‫MSBuild، فيجب توسيع متغير بيئة مسار ب تضمين المجلد.NET Framework.

لتوسيع مسار ليتضمن ‏‫MSBuild

  • في موجه الأوامر، اكتب set PATH=%PATH%;%WINDIR%\Microsoft.Net\Framework\v4.0. إذا كان لديك إصدار آخر من.NET Framework مثبتاً، قم بتغيير رقم الإصدار تبعاً لذلك.

    ملاحظة

    اسم ‏‫MSBuild مجلد تشغيل الكمبيوتر الخاص بك قد يتضمن رقم بنية مثل v2.0.50727. إذا كان الأمر كذلك، تضمين بنية ترقيم تشغيل سطر الأوامر، تشغيل سبيل المثال، set PATH=%PATH%;%WINDIR%\Microsoft.Net\Framework\v2.0.50727.

    بدلاً من ذلك، إذا كان لديك ‏‫Visual Studio مثبتاً، يمكنك استخدام تعجيل الأوامر Studio Visual Basic ، الذي يحتوي على مسار يحتوي ‏‫MSBuild مجلد.

تستخدم في مشروع الملف إلى بنية تطبيق

والآن، إلى إنشاء تطبيق، استخدم ملف مشروع الذي قمت بإنشائه الآن.

إلى بنية تطبيق

  1. في موجه الأوامر، اكتب msbuild helloworld.csproj /t:Build.

    وهذا ببناء الهدف بنية من ملف مشروع Helloworld باستدعاء المحول البرمجي Visual C# إلى بنية تطبيق Helloworld.

  2. اختبار تطبيق بواسطة كتابة helloworld.

    **Hello, world!**يجب أن يتم عرض رسالة.

ملاحظة

يمكنك مشاهدة المزيد من التفاصيل بنية بزيادة المستوى اطناب. لتعيين المستوى اطناب إلى "مفصله"، نوع أحد هذه الأوامر في تعجيل الأوامر:

msbuild helloworld.csproj /t:Build /verbosity:detailed

إضافة خصائص بنية

يمكنك إضافة بنية خصائص إلى ملف مشروع إلى عنصر تحكم آخر بنية. الآن إضافة هذه الخصائص:

  • AssemblyNameخاصية إلى تعيين اسم التطبيق.

  • OutputPathخاصية إلى تحديد مجلد إلى يحتوي على تطبيق.

إلى إضافة خصائص البنية

  1. يحذف تطبيق الموجود بواسطة كتابة del helloworld.exeفي تعجيل الأوامر.

  2. في ملف مشروع، قم بإدراج هذا PropertyGroupعنصر فقط بعد الفتح Projectعنصر:

      <PropertyGroup>
        <AssemblyName>MSBuildSample</AssemblyName>
        <OutputPath>Bin\</OutputPath>
      </PropertyGroup>
    
  3. إضافة هذه مهمة بهدف إنشاء، فقط قبل Cscمهمة:

        <MakeDir Directories="$(OutputPath)"      Condition="!Exists('$(OutputPath)')" />
    

    MakeDirمهمة إنشاء مجلد الذي هو المسمى من قبل OutputPathخاصية، شرط أن لا يوجد مجلد بالذي تسمية حاليا exهوts.

  4. إضافة هذا OutputAssemblyسمة Cscمهمة:

    <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
    

    هذا بتوجيه المحول البرمجي Visual C# لإنتاج تجميع يسمى AssemblyNameخاصية ووضعها في مجلد الذي يسمى OutputPathخاصية.

  5. احفظ التغييرات التي قمت بإجرائها.

يجب الآن تتشابه مع ملف مشروع التعليمة البرمجية التالية:

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AssemblyName>MSBuildSample</AssemblyName>
    <OutputPath>Bin\</OutputPath>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="helloworld.cs" />
  </ItemGroup>
  <Target Name="Build">
    <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
    <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
  </Target>
</Project>

ملاحظة

يستحسن الذي إضافة المحدد مسار الخط المائل العكسي (\) في إنهاء اسم المجلد عندما تقوم بتعيين في OutputPathعنصر، بدلاً من إضافة ing في OutputAssemblyسمة Cscمهمة. ولذلك،

<OutputPath>Bin\</OutputPath>

OutputAssembly=="$(OutputPath)$(AssemblyName).exe" />

هو أفضل من

<OutputPath>Bin</OutputPath>

OutputAssembly=="$(OutputPath)\$(AssemblyName).exe" />

اختبار خصائص بنية

والآن يمكنك بنية تطبيق باستخدام ملف مشروع فيه باستخدام خصائص البنية لتحديد الإخراج مجلد واسم تطبيق.

إلى اختبار خصائص البنية

  1. في موجه الأوامر، اكتب msbuild helloworld.csproj /t:Build.

    يؤدي هذا إلى إنشاء\Bin\مجلد ثم قم باستدعاء المحول البرمجي Visual C# لإنشاء تطبيق MSBuildSample ووضعه في\Bin\مجلد.

  2. إلى التحقق من أنه قد تم تاريخ الإنشاء المجلد\Bin\، ويحتوي على تطبيق MSBuildSample، اكتب dir Bin.

  3. اختبار تطبيق بواسطة كتابة Bin\MSBuildSample.

    **Hello, world!**يجب أن يتم عرض رسالة.

إضافة بنية الأهداف

التالي، إضافة الثاني أكثر تستهدف إلى ملف مشروع، كما يلي:

  • أ مسح الهدف الذي يقوم بحذف الملفات القديمة.

  • هدف اعادة تجميع يستخدم DependsOnTargetsسمة إلى فرض مهمة تنظيف إلى تشغيل قبل بنية مهمة.

والآن بعد أن لديك أهداف متعددة، يمكنك تعيين الهدف بنية كـ هدف الافتراضي.

إلى إضافة أهداف الإنشاء

  1. في ملف مشروع، إضافة هذه الأهداف الثاني فقط بعد بنية الهدف:

      <Target Name="Clean" >
        <Delete Files="$(OutputPath)$(AssemblyName).exe" />
      </Target>
      <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
    

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

  2. قم بإضافة هذه DefaultTargetsالسمة إلى الفتح Projectالعنصر:

    <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    

    يؤدي هذا إلى تعيين الهدف بنية كهدف افتراضي.

يجب الآن تتشابه مع ملف مشروع التعليمة البرمجية التالية:

<Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AssemblyName>MSBuildSample</AssemblyName>
    <OutputPath>Bin\</OutputPath>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="helloworld.cs" />
  </ItemGroup>
  <Target Name="Build">
    <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
    <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
  </Target>
  <Target Name="Clean" >
    <Delete Files="$(OutputPath)$(AssemblyName).exe" />
  </Target>
  <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
</Project>

اختبار الأهداف بنية

يمكنك ممارسة أهداف البنية الجديدة لاختبار هذه الميزات من ملف مشروع:

  • إنشاء? the الافتراضي بنية.

  • إعداد the اسم تطبيق at the الأمر تعجيل.

  • Deleting the تطبيق قبل another تطبيق هو built.

  • Deleting the تطبيق without إنشاء? another تطبيق.

إلى اختبار the بنية targets

  1. في موجه الأوامر، اكتب msbuild helloworld.csproj /p:AssemblyName=Greetings.

    Because you did not استخدم the /t تبديل إلى بوضوح التعيين the الهدف, ‏‫MSBuild runs the الافتراضي بنية الهدف. The /p تبديل overrides the AssemblyName خاصية و gives it the جديد القيمة, Greetings. This causes a جديد تطبيق, Greetings.exe, إلى be تاريخ الإنشاء في the \Bin\ مجلد.

  2. إلى verify that the \Bin\ مجلد يحتوي على كلاهما the MSBuildSample تطبيق و the جديد Greetings تطبيق, نوع dir Bin.

  3. اختبار the Greetings تطبيق بواسطة كتابة Bin\Greetings.

    **Hello, world!**يجب أن يتم عرض رسالة.

  4. يحذف the MSBuildSample تطبيق بواسطة كتابة msbuild helloworld.csproj /t:clean.

    This runs the مسح مهمة إلى إزالة the تطبيق that has the الافتراضي AssemblyName قيمة الخاصية, MSBuildSample.

  5. يحذف the Greetings تطبيق بواسطة كتابة msbuild helloworld.csproj /t:clean /p:AssemblyName=Greetings.

    This runs the مسح مهمة إلى إزالة the تطبيق that has the given AssemblyName قيمة الخاصية, Greetings.

  6. إلى verify that the \Bin\ مجلد هو now فارغ, نوع dir Bin.

  7. اكتب msbuild.

    على الرغم من أن ملف مشروع هو لم يكن محدداً، ‏‫MSBuild بناء الملف helloworld.csproj لأن هناك هو ملف مشروع واحد فقط في المجلد الحالي. يؤدي هذا تطبيق MSBuildSample المراد إنشاؤه في\Bin\مجلد.

    إلى التحقق من أن المجلد\Bin\يحتوي على تطبيق MSBuildSample، اكتب dir Bin.

بناء تزايدي

يمكنك معرفة MS بنية إلى بنية هدف فقط إذا تغيرت الملفات المصدر أو الملفات الهدف استناداً إلى الهدف. يستخدم ‏‫MSBuild طابع زمني لملف إلى لتحديد ما إذا كان قد تغير.

إلى بنية متزايد

  1. في ملف مشروع، قم بإضافة هذه السمات إلى فتح الهدف بنية:

    Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe"
    

    Th هو يحدد أن الهدف بنية يعتمد تشغيل ملفات إدخال المحددة في Compileمجموعة عنصر والتي هدف الإخراج هو ملف تطبيق.

    الناتج عن عملية الدمج بنية الهدف يجب أن تتشابه مع تعليمات برمجية التالية:

    <Target Name="Build" Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe">
      <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
      <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
    </Target>
    
  2. اختبار بنية الهدف بكتابة msbuild /v:dفي تعجيل الأوامر.

    تذكر أن helloworld.csproj هو ملف مشروع الافتراضي، و أن بنية هدف الافتراضي.

    /v:dتبديل بتحديد وصف مطول للإنشاء عملية.

    يجب عرض هذه الأسطر:

    Skipping target "Build" because all output files are up-to-date with respect to the input files.

    Input files: HelloWorld.cs

    Output files: Bin\MSBuildSample.exe

    يتخطى ‏‫MSBuild الهدف بنية لأن أي من ملفات مصدر تم تغييرها منذ آخر مرة تم بنية تطبيق.

المثال

الوصف

يظهر المثال التالي ملف مشروع تجميع #Visual Cتطبيق وقم بتسجيل رسالة التي يحتوي على اسم ملف الإخراج.

الرمز

<Project DefaultTargets = "Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >

    <!-- Set the application name as a property -->
    <PropertyGroup>
        <appname>HelloWorldCS</appname>
    </PropertyGroup>

    <!-- Specify the inputs by type and file name -->
    <ItemGroup>
        <CSFile Include = "consolehwcs1.cs"/>
    </ItemGroup>

    <Target Name = "Compile">
        <!-- Run the Visual C# compilation using input files of type CSFile -->
        <CSC
            Sources = "@(CSFile)"
            OutputAssembly = "$(appname).exe">
            <!-- Set the OutputAssembly attribute of the CSC task
            to the name of the executable file that is created -->
            <Output
                TaskParameter = "OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>
        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>
</Project>

المثال

الوصف

يظهر المثال التالي ملف مشروع تجميع Visual Basicتطبيق وقم بتسجيل رسالة التي يحتوي على اسم ملف الإخراج.

الرمز

<Project DefaultTargets = "Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >

    <!-- Set the application name as a property -->
    <PropertyGroup>
        <appname>HelloWorldVB</appname>
    </PropertyGroup>

    <!-- Specify the inputs by type and file name -->
    <ItemGroup>
        <VBFile Include = "consolehwvb1.vb"/>
    </ItemGroup>

    <Target Name = "Compile">    
        <!-- Run the Visual Basic compilation using input files of type VBFile -->
        <VBC
            Sources = "@(VBFile)"
            OutputAssembly= "$(appname).exe">
            <!-- Set the OutputAssembly attribute of the VBC task
            to the name of the executable file that is created -->
            <Output
                TaskParameter = "OutputAssembly"
                ItemName = "EXEFile" />
        </VBC>
        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>
</Project>

ما هو التالي؟

Vهوual Studio يمكنك تلقائياً ذلك الكثير من العمل هو في ترتيب هو معاينة. إلى تعلم كيفية إلى استخدام ‏‫Visual Studio إلى إنشاء، تحرير، بناء، وقم باختبار ملفات مشروع ‏‫MSBuild، راجع الإرشادات التفصيلية: استخدام ‏‫MSBuild.

راجع أيضًا:

موارد أخرى

MSBuild

مرجع MSBuild