سؤال

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

لديّ تعريف إنشاء TFS الذي يقوم حاليًا بإنشاء الحل بالكامل ليليًا ويسقطه على مشاركة شبكة كنسخة احتياطية للبناء القديم. كل ما أريد القيام به الآن هو أن يكون PublishProfile قد قمت بالفعل بإعداد تطبيق الويب بالنسبة لي. أنا متأكد من أن هذا أمر بسيط حقًا ، لكنني كنت ألعب بأوامر MSBuild ليوم كامل الآن دون حظ. مساعدة!

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

المحلول

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

عند إعداد تعريف إنشاء فريقك من أجل النشر ، تحتاج إلى تمرير بعض القيم لوسائط MSBuild لعملية الإنشاء. انظر الصورة أدناه حيث أبرزت هذا.alt text

الخيار 1:تمرير في الحجج التالية:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

اسمحوا لي أن أشرح هذه المعلمات قليلاً ، أظهر لك النتيجة ثم اشرح الخيار التالي.DeployOnBuild=true: هذا يخبر المشروع بتنفيذ الهدف (الأهداف) المحددة في DeployTarget منشأه.

DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder: هذا يحدد هدف DeployTarget.

PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish": يحدد هذا الموقع الذي سيتم فيه كتابة ملفات الحزمة. هذا هو الموقع الذي تتم فيه كتابة الملفات قبل تعبئتها.

AutoParameterizationWebConfigConnectionStrings=false: هذا يخبر خط أنابيب النشر على الويب (WPP) بعدم تحديد سلاسل الاتصال في ملف web.config. إذا لم تحدد هذا ، فسيتم استبدال قيم سلسلة الاتصال الخاصة بك بعناوين نائبة مثل $ (REPLACABLETOKN_DUMYCONSTR-WEB.CONFIG Connection string_0)

بعد قيامك بذلك ، يمكنك بدء تشغيل البناء ثم داخل موقع PackageTemprootdir ، ستجد مجلد PackagetMP وهذا يحتوي على المحتوى الذي تبحث عنه.

الخيار 2:لذلك بالنسبة للخيار السابق ، ربما لاحظت أنه ينشئ مجلد باسم PackagetMP وإذا كنت لا تريد ذلك ، فيمكنك استخدام الخيارات التالية بدلاً من ذلك.

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

الفرق هنا هو أنه بدلاً من PackageTempRootDir سوف تمر في _PackageTempDir. السبب في أنني لا أقترح أن أبدأ هو أن خصائص MSBuild التي تبدأ بـ _ تشير إلى أن الخاصية في الأساس "داخلية" بمعنى أنه في إصدار مستقبلي قد يعني شيئًا آخر أو غير موجود على الإطلاق. لذلك استخدام على مسؤوليتك الخاصة.

الخيار 3

مع كل ما قيل ، يمكنك فقط استخدام البناء لتعبئة الويب الخاصة بك. إذا كنت تريد القيام بذلك ، فاستخدم الوسيطات التالية.

/p:DeployOnBuild=true;DeployTarget=Package

عندما تقوم بذلك في مجلد DROP للبناء ، ستجد مجلد _publishedWebsites كما تفعل عادة ، ثم داخل ذلك سيكون هناك مجلد {projectName} _package حيث {projectName} هو اسم المشروع. سيحتوي هذا المجلد على الحزمة وملف .cmd وملف المعلمات وزوجين آخرين. يمكنك استخدام هذه الملفات لنشر الويب الخاص بك.

آمل ألا يكون ذلك معلومات عن الحمل.

نصائح أخرى

تتطلب القدرة على نشر مواقع الويب ، وتكوين تغييرات مخطط IIS و Push of the Dev-> qa-> إما التكوين المخصص لتقليد رمز النشر أو المخصص حيث تشارك إعدادات IIS.

اعتبارًا من Visual Studio 2013.2 أضافت Microsoft منتجًا ثالثًا يدير نشر مواقع الويب وتغييرات التكوين ونشر قاعدة البيانات مع Windows Workflow وستكون الحل الموصى بها لأتمتة النشر من TFS Build.

ويمكن الاطلاع على مزيد من المعلومات هنا:

http://www.visualstudio.com/en-us/explore/release-management-vs.aspx

يمكنك استخدام النشر/النشر في Visual Studio 2010.

يرى http://www.ewaldhofman.nl/post/2010/04/12/auto-deployment-of-my-web-application-with-team-build-2010-to-add--dreacting.aspx للمزيد من المعلومات

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