MSBuild - الحصول على الهدف الذي يتم استدعاؤه من سطر الأوامر

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

سؤال

هل يعرف أحد كيفية الحصول على اسم TARGET (/t) الذي يتم استدعاؤه من سطر أوامر MSBuild؟هناك أنواع قليلة من الأهداف التي يمكن استدعاؤها وأريد استخدام هذه الخاصية في إشعار للمستخدمين.

مثال:

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV

أريد الوصول إلى الكلمات المستهدفة ApplicationDeployment في ملف .Proj الخاص بي.

هل هناك عقار يمكنني الوصول إليه؟أي فكرة عن كيفية القيام بذلك؟

يحرر: لا أريد أن أضطر أيضًا إلى المرور على عقار للحصول على هذا.

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

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

المحلول 2

لقد وجدت الجواب!

<Target Name="ApplicationDeployment" >
    <CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
      <Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
    </CreateProperty>

أود أن أعطي الفضل الجزئي لللامبالاة.غير متأكد من كيفية القيام بذلك.

نصائح أخرى

لست متأكدًا من كيفية تنفيذ ما تطلبه بالضبط، ولكن هل يمكنك تمرير هذه السلسلة باستخدام الخيار /p؟

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment

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

<Target Name="ApplicationDeployment">
<PropertyGroup>
  <InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>

...
</Target>

لا توجد طريقة للقيام بذلك (التي أعرفها).لا يحتوي MSBuild على خاصية لقائمة الأهداف المطلوبة للبناء.

ومع ذلك، إذا وجدت طريقة، فضع في اعتبارك أنه قد لا يكون هدفًا واحدًا، بل قائمة من الأهداف التي يجب بناؤها.

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

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