سؤال

على النجاح في بناء أود أن نسخ محتويات الدليل الإخراج إلى موقع آخر تحت نفس "القاعدة" المجلد.هذا المجلد الأصل هو قريب جزء يمكن أن تختلف على أساس المصدر إعدادات التحكم.

وقد سرد عدد قليل من الماكرو القيم المتاحة لي ...

$(SolutionDir) = D:\GlobalDir\Version\AppName\Solution1\بناء

$(ProjectDir) = D:\GlobalDir\Version\AppName\Solution1\Version\ProjectA\

أريد أن نسخة الانتاج Dir محتويات المجلد التالي :

D:\GlobalDir\Version\AppName\Solution2\مشروع\التبعية

قاعدة الموقع "D:\GlobalDir\Version\AppName" يجب أن يتم جلبه من أحد فوق وحدات الماكرو.ومع ذلك ، فإن أيا من ماكرو قائمة القيم فقط الموقع الأصل.

كيف يمكنني استخراج فقط قاعدة موقع آخر بناء نسخ الأمر ؟

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

المحلول

إذا كان أي من TargetDir أو وحدات الماكرو الأخرى نقطة إلى المكان الصحيح ، واستخدام ".." الدليل إلى العودة إلى الوراء حتى الهرمي للمجلد.

ie.استخدام $(SolutionDir)\..\.. للحصول على قاعدة الخاص بك الدليل.


للحصول على قائمة من كافة وحدات الماكرو ، انظر هنا:

http://msdn.microsoft.com/en-us/library/c02as0cs.aspx

نصائح أخرى

هنا هو ما كنت تريد أن تضع في المشروع Post-build سطر الأوامر:

copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"

تحرير:أو إذا الهدف الخاص بك هو اسم مختلف عن اسم المشروع.

copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"

قد تتمكن من محاولة:

$(SolutionDir)..\..\

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

استخدام شيء من هذا القبيل ما يلي:

<PostBuildEvent>
  MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
  start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>

(ملاحظة: start XCOPY بدلا من XCOPY تستخدم للالتفاف على مشكلة أذونات الذي منع النسخ)

الماكرو $(SolutionDir) تقييم ..\ عند تنفيذ msbuild من batchfile ، مما أدى إلى XCOPY الأمر الفشل.خلاف ذلك عملت بشكل جيد عندما بنيت من داخل Visual Studio.أكد باستخدام /verbosity:diagnostic لمعرفة تقييم الانتاج.

باستخدام الماكرو $(ProjectDir)..\ بدلا من ذلك, والذي يصل إلى نفس الشيء ، عملت بشكل جيد و الإبقاء على المسار الكامل في بناء السيناريوهات.

فإنه ليس من المنطقي استخدام msbuild مباشرة ؟ إذا كنت تفعل هذا مع كل بناء ، ثم يمكنك إضافة msbuild المهمة في نهاية المطاف ؟ إذا كنت ترغب فقط لمعرفة ما إذا كنت لا يمكن العثور على ماكرو آخر قيمة لم أظهر على Visual Studio IDE ، يمكنك التبديل على msbuild خيارات التشخيص و التي سوف تظهر لك جميع المتغيرات التي يمكن استخدامها ، وكذلك القيمة الحالية.

التبديل هذه في visual studio, انتقل إلى أدوات/خيارات ثم انتقل إلى أسفل الشجرة نظر إلى قسم يسمى المشاريع والحلول ، وتوسيع أن وانقر على بناء وتشغيل في حق من هو المنسدلة التي تحدد بناء إخراج الإسهاب ، وضع هذا التشخيص, سوف تظهر لك ما الماكرو القيم يمكن أن تستخدمها.

لأنني لا أعرف تماما إلى أي مستوى كنت ترغب في الذهاب ، وكيف المعقدة كنت تريد بناء أن يكون هذا قد تعطيك فكرة.لقد تم مؤخرا القيام بناء النصوص ، حتى تنفيذ SQL البرمجية كجزء من بناء.إذا كنت تريد المزيد من المساعدة أو حتى بعض العينات بناء النصوص ، اسمحوا لي أن أعرف, ولكن إذا كان هذا هو مجرد عملية صغيرة كنت تريد تشغيل في نهاية بناء ، ربما سوف الكامل msbuild السيناريو هو قليلا أكثر من القتل.

آمل أن يساعد ريحان

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