كيف يمكنك استدعاء العديد من البرامج النصية MSBuild من برنامج MSBuild النصي واحد

StackOverflow https://stackoverflow.com/questions/1213228

  •  06-07-2019
  •  | 
  •  

سؤال

لدي 3 نصوص MSBuild للنشر ، 1 لنشر واجهة المستخدم 1 لنشر بضع خدمات على شبكة الإنترنت.1 لنشر الخدمات الخلفية.

الآن أود إنشاء برنامج MSBuild للنشر بنقرة واحدة، والذي يستدعي جميع البرامج النصية الثلاثة المذكورة أعلاه، والتي يمكن تنفيذها من خادم TeamCity.

فكيف يمكنني استدعاء نصوص MSBuild الثلاثة هذه من برنامج MSBuild Script مختلف.

هل كانت مفيدة؟

المحلول

نصائح أخرى

لم أستخدم TeamCity Server، ولكن أحد الحلول البديلة الممكنة هو دمج نصوص البناء الثلاثة في برنامج نصي واحد.وقم بوضع مهام البرامج النصية الثلاثة المنفصلة في أهداف منفصلة في ملف البناء الرئيسي.لذلك، بدلاً من نصوص البناء الثلاثة المنفصلة، ​​لديك برنامج نصي بناء واحد بثلاثة أهداف، وهي PublishUI، وplompleServices، وplombleBackend.العينة غير المختبرة أدناه:

    <?xml version="1.0" encoding="utf-8" ?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DefaultTarget" ToolsVersion="3.5">

    <Target Name="DefaultTarget">
            <CallTarget Targets="deployUI" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployServices" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployBackend" ContinueOnError="false"></CallTarget> 
    </Target>

    <Target Name="deployUI">
            <!-- Put UI deployment tasks here -->
    </Target>

    <Target Name="deployServices">
            <!-- Put Services deployment tasks here -->
    </Target>

    <Target Name="deployBackend">
            <!-- Put Backend deployment tasks here -->
    </Target>
</Project>

في MSBuild 4.0 قد يكون هناك خيار استيراد مشروط ملفات المشروع الثلاثة في برنامج MSBuild للنشر بنقرة واحدة:

<Import Project="ProjectPath1" Condition="'$(DeployUI)'!=''" />
<Import Project="ProjectPath2" Condition="'$(DeployWebServices)'!=''" />
<Import Project="ProjectPath3" Condition="'$(DeployBackendServices)'!=''" />

<Target Name="DeployTheWorld">
    <Message Text="Deploying..." />
</Target>

ثم استخدم ميزة AfterTargets على الأهداف التي ترغب في تشغيلها في ملفات مشروعك المنفصلة التي قمت باستيرادها:

  <Target Name="DeployUI" AfterTargets="DeployTheWorld">
    <Message Text="Hello from DefaultAfterTarget"/>
  </Target>

سيمنحك هذا مرونة في تخصيص النشر من داخل TeamCity.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top