سؤال

يا قوم،

باختصار ، أريد تكرار هذا الحوار:alt text

إنه مشروع Visual Studio 2010 ASP.NET MVC. إذا قمت بتنفيذ هذا الأمر ، أحصل على جميع الملفات التي أريدها ، بما في ذلك Web.Configs المحولة في دليل "C: ToDeploy".

أرغب في تكرار ذلك على سطر الأوامر حتى أتمكن من استخدامه لبناء بيئة ضمان الجودة.

لقد رأيت العديد من المقالات حول كيفية القيام بذلك على سطر الأوامر للنشر عن بُعد ، لكنني أريد فقط القيام بذلك لنشر نظام الملفات.

أعلم أنه يمكنني تكرار هذه الوظيفة باستخدام مهام NANT أو نصوص أشعل النار ، لكنني أريد أن أفعل ذلك باستخدام هذه الآلية حتى لا أكرر نفسي.

لقد بحثت في هذا الأمر أكثر من ذلك ، ووجدت هذه الروابط ، لكن لم يحلها أي منها بشكل نظيف:

شكرا لك مقدما!

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

المحلول

حسنا ، وأخيرا برزت هذا خارج.

سطر الأوامر الذي تحتاجه هو:

msbuild path/to/your/webdirectory/YourWeb.csproj /p:Configuration=Debug;DeployOnBuild=True;PackageAsSingleFile=False

يمكنك تغيير المكان الذي يخرج فيه المشروع عن طريق إضافة خاصية outdir=c:\wherever\ في /P: القسم.

هذا سيخلق الإخراج في:

path/to/your/webdirectory/obj/Debug/Package/PackageTmp/

يمكنك بعد ذلك نسخ هذه الملفات من الدليل أعلاه باستخدام أي طريقة تريدها.

لقد حصلت على كل هذا العمل كمهمة Ruby Rake باستخدام ألباكور. أحاول إنجاز كل شيء حتى أتمكن من وضعه فعليًا كمساهمة في المشروع. ولكن إذا كان أي شخص يريد الرمز قبل ذلك ، فأخبرني بذلك.

التجاعيد الأخرى التي وجدتها هي أنه كان يضع معلمات رمزية في web.config. إذا لم تكن بحاجة إلى هذه الميزة ، فتأكد من إضافة:

/p:AutoParameterizationWebConfigConnectionStrings=false

نصائح أخرى

اعتقدت أنني سأقوم بنشر حل آخر وجدته ، لقد قمت بتحديث هذا الحل لتضمين ملف السجل.

هذا مشابه ل نشر تطبيق ويب من سطر الأوامر, ، ولكن فقط تنظيف ملف السجل وأضاف. تحقق أيضًا من المصدر الأصلي http://www.digitallycreated.net/blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

إنشاء msbuild_publish_site.bat (اسمه مهما) في جذر مشروع تطبيق الويب الخاص بك

set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
set destPath=C:\Publish\MyWebBasedApp\

:: clear existing publish folder
RD /S /Q "%destPath%"

call %msBuildDir%\msbuild.exe  MyWebBasedApp.csproj "/p:Configuration=Debug;PublishDestination=%destPath%;AutoParameterizationWebConfigConnectionStrings=False" /t:PublishToFileSystem /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_Publish_LOG.log

set msBuildDir=
set destPath=

قم بتحديث ملف مشروع الويب الخاص بك myWebBAdipp.csproj عن طريق إضافة XML التالي تحت <Import Project= بطاقة شعار

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Error Condition="'$(PublishDestination)'==''" Text="The PublishDestination property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDestination)" />

    <ItemGroup>
        <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="True" />
</Target>

هذا يعمل بشكل أفضل بالنسبة لي من الحلول الأخرى.

تحقق من ما يلي لمزيد من المعلومات:

1) http://www.digitallycreated.net/blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

2) نشر تطبيق ويب من سطر الأوامر

3) بناء مشروع Visual Studio من خلال سطر الأوامر

الحل الخاص بي ccnet مع ال Web.Config Transformation:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
        <projectFile>GertakariakMSWeb2.vbproj</projectFile>
        <targets>Build</targets>
        <timeout>600</timeout>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
        <buildArgs>
            /noconsolelogger /p:Configuration=Release /v:diag
            /p:DeployOnBuild=true
            /p:AutoParameterizationWebConfigConnectionStrings=false
            /p:DeployTarget=Package
            /p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
        </buildArgs>
        </msbuild>
</tasks>

على VS2012 وما فوق ، يمكنك الرجوع إلى الموجود نشر ملفات تعريف في مشروعك مع MSBuild 12.0 ، سيكون هذا مكافئًا للنقر بزر الماوس الأيمن ونشر ... اختيار ملف تعريف نشر ("MyProfile" على هذا المثال):

msbuild C:\myproject\myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"

لدي حل لـ Visual Studio 2012: https://stackoverflow.com/a/15387814/2164198

ومع ذلك ، فإنه يعمل مع عدم وجود استوديو Visual مثبت على الإطلاق! (يرى تحديث). لم أتحقق بعد من ما إذا كان يمكن للمرء الحصول على جميع الأشياء المطلوبة من Visual Studio Express 2012 لتثبيت الويب.

ملف MSBuild كامل مع الإلهام من Cubanx

    <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Publish">
        <RemoveDir Directories="..\build\Release\Web\"
                     ContinueOnError="true" />        
       <MSBuild Projects="TheWebSite.csproj"
                Targets="ResolveReferences;_CopyWebApplication"
                Properties="Configuration=Release;WebProjectOutputDir=..\build\Release\Web;OutDir=..\build\Release\Web\bin\"
        />  
    </Target>
    <Target
        Name="Build"
        DependsOnTargets="Publish;">
    </Target>   
</Project>

هذا يضع الموقع المنشور في الويب .. build الإصدار مجلد

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