MSBuild - الحصول على الهدف الذي يتم استدعاؤه من سطر الأوامر
-
02-07-2019 - |
سؤال
هل يعرف أحد كيفية الحصول على اسم 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 الخاص بك لإرسال الإشعارات، ولكن هذا المجال ينتمي إلى خادم الإنشاء.