سؤال

أحاول نشر تطبيق الويب الخاص بي تلقائيًا عند تنفيذ إنشاء إصدار. أقوم بذلك باستخدام هدف _copywebapplication. أضفت ما يلي إلى ملف .csproj الخاص بي:

  <!-- Automatically Publish in Release build. -->
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
  <Target Name="AfterBuild">
    <RemoveDir Directories="$(ProjectDir)..\Output\MyWeb" ContinueOnError="true" />
    <MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)..\Output\MyWeb;OutDir=$(ProjectDir)bin\" Targets="ResolveReferences;_CopyWebApplication" />
  </Target>

هذا يعمل ولكن مع قضية واحدة. الفرق بين هذا الإخراج ، والإخراج الذي تم إنشاؤه عند استخدام عنصر قائمة النشر في Visual Studio ، هو أن تحويل web.release.config لا يتم تطبيقه على ملف web.config عند استخدام طريقة msBuild. بدلاً من ذلك ، يتم نسخ Web.Config و Web.Release.Config و Web.Debug.config.

أي أفكار موضع تقدير.

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

المحلول

لقد ضربت رأسي على الحائط لهذا الغرض. بعد المشي لمسافات طويلة من خلال أهداف MSBuild ، صادفت شيئًا "غير شفاف".

قصة قصيرة طويلة: حاول استخدام الجديد _WPPCopyWebApplication. إنه يعمل على جهازي. القديم _CopyWebApplication لا يدعم التحولات لأسباب قديمة. هذا ما افعله:

msbuild /t:Rebuild /p:OutDir=..\publish\;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1\MvcApplication1.csproj

# UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false

قصة طويلة:

القي نظرة على VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets. إنه خاطئ للغاية. يجد _CopyWebApplication في السطر 70. التعليق هو:

أصبح _copywebapplication الأصلي الآن إرثًا ، ولا يزال بإمكانك استخدامه عن طريق تعيين $ (usewpp_copywebapplication) ل حقيقي. بشكل افتراضي ، يتغير الآن لاستخدام هدف _wppcopywebapplication في microsoft.web.publish.targets. يسمح بالاستفادة من web.config trsnaformation. [كل كذا

اه أوه. UseWPP_CopyWebApplication الإعدادات الافتراضية إلى False (السطر 27) وهو أمر منطقي إذا كنت لا تريد كسر الموجود _CopyWebApplication. لذا فإن تعيينه على True سيستخدم بالفعل الأشياء الجديدة WPP التي تم تقديمها إلى VS 2010. أنا أفضل ذلك على استدعاء الهدف "المخفي".

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