45

लोग,VS2010 वेब फाइल सिस्टम के प्रकाशित कमांड लाइन संस्करण

संक्षेप में तैनात है, मैं इस संवाद को दोहराने के लिए चाहते हैं। अगर मैं इस आदेश को निष्पादित करता हूं, तो मुझे "सी: \ ToDeploy" निर्देशिका में रूपांतरित वेब.कॉन्फिग सहित सभी फाइलें मिलती हैं।

मैं इसे कमांड लाइन पर दोहराना चाहता हूं ताकि मैं इसे क्यूए पर्यावरण निर्माण के लिए उपयोग कर सकूं।

मैंने रिमोट परिनियोजन के लिए कमांड लाइन पर ऐसा करने के तरीके पर विभिन्न लेख देखे हैं, लेकिन मैं इसे फ़ाइल सिस्टम परिनियोजन के लिए करना चाहता हूं।

मुझे पता है कि मैं एनएएनटी कार्यों या रेक स्क्रिप्ट का उपयोग करके इस कार्यक्षमता को दोहरा सकता हूं, लेकिन मैं इसे इस तंत्र का उपयोग करके करना चाहता हूं इसलिए मैं खुद को दोहराना नहीं चाहता हूं।

मैं इस में कुछ और जांच की है, और मैं इन कड़ियों पाया है, लेकिन उनमें से कोई यह सफाई से हल:

धन्यवाद अग्रिम रूप से!

उत्तर

46

ठीक है, आखिर में यह पता चला।

कमांड लाइन आप की जरूरत है: अनुभाग:

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

आप/p में outdir=c:\wherever\ की संपत्ति जोड़कर, जहां परियोजना outputs बदल सकते हैं।

इस पर उत्पादन पैदा करेगा:

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

फिर आप का उपयोग कर जो भी विधि आप चाहें तो इसके बाद के संस्करण निर्देशिका से उन फ़ाइलों को कॉपी कर सकते हैं।

मुझे यह सब Albacore का उपयोग करके रूबी रेक कार्य के रूप में काम कर रहा है। मैं इसे पूरा करने की कोशिश कर रहा हूं इसलिए मैं इसे वास्तव में परियोजना में योगदान के रूप में रख सकता हूं। लेकिन अगर कोई इससे पहले कोड चाहता है, तो मुझे बताएं।

मुझे मिली एक और झुर्रियां यह थी कि यह टोकनयुक्त पैरामीटर को Web.config में डाल रहा था। आपको लगता है कि सुविधा की जरूरत नहीं है, सुनिश्चित करें कि आप जोड़ने:

/p:AutoParameterizationWebConfigConnectionStrings=false 
+0

दुर्भाग्य से, यह प्रतियां पूरे पैकेज। मुझे लगता है कि आपको केवल बदली गई फ़ाइलों की प्रतिलिपि बनाने के लिए एमएस वेब परिनियोजन का उपयोग करने की आवश्यकता होगी। – jrummell

+5

पूर्णता के लिए, आउटडियर संपत्ति को पीछे की ओर स्लैश (अन्यथा एमएसबिल्ड त्रुटियों) के साथ समाप्त होना चाहिए। तो आपका सुझाव 'outdir = c: \ कहीं भी \' होना चाहिए। –

+0

इसके अलावा, '/ p: DeployOnBuild = True' के बजाय आप केवल पैकेज लक्ष्य का उपयोग कर सकते हैं:'/t: Package'। मेरे लिए काम करता है, साथ ही 'पैकेजएस सिंगलेफ़ाइल' और 'ऑटो पैरामैटिज़ेशन वेबकॉनफिगकनेक्शनस्ट्रिंग्स' पैरामीटर दोनों का भी सम्मान किया जाता है। –

11

मुझे लगता है मैं एक एक और समाधान है कि मैंने पाया पोस्ट था सोचा, मैं इस समाधान एक लॉग फ़ाइल शामिल करने के लिए नवीनीकृत किया है।

यह Publish a Web Application from the Command Line के समान है, लेकिन बस साफ़ किया गया है और लॉग फ़ाइल जोड़ा गया है। मूल स्रोत http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

एक MSBuild_publish_site बनाएं।बल्ला (नाम यह जो कुछ भी) अपने वेब अनुप्रयोग परियोजना के रूट में

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= 

अद्यतन <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> 

इस के अंतर्गत निम्नलिखित एक्सएमएल जोड़कर अपने वेब अनुप्रयोग प्रोजेक्ट फाइल MyWebBasedApp.csproj अन्य समाधानों की तुलना में मेरे लिए बेहतर काम करता है।

चेक बाहर अधिक जानकारी के लिए निम्नलिखित:

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

2) Publish a Web Application from the Command Line

3) Build Visual Studio project through the command line

+2

यह वास्तव में अच्छी तरह से काम करता है – Dann

-1

एक पूरा 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> 

इस वेब में प्रकाशित वेबसाइट स्थानों .. \ निर्माण \ रिलीज फ़ोल्डर

0

मैं दृश्य स्टूडियो 2012 के लिए एक समाधान मिल गया है: https://stackoverflow.com/a/15387814/2164198

हालांकि, यह सब पर स्थापित कोई दृश्य स्टूडियो के साथ काम करता है! (देखें अद्यतन)। मैंने अभी तक जांच नहीं की है कि क्या कोई वेब इंस्टॉलेशन के लिए विजुअल स्टूडियो एक्सप्रेस 2012 से सभी आवश्यक सामान प्राप्त कर सकता है।

1

Web.config परिवर्तन साथ CCNET के लिए मेरे समाधान:

<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> 
1

VS2012 पर और ऊपर, आप MSBuild 12.0 के साथ मौजूदा publish profiles on your project का उल्लेख कर सकते, इस के बराबर होगा राइट क्लिक करें और प्रकाशित ... (इस उदाहरण पर "MyProfile") एक प्रकाशित प्रोफ़ाइल का चयन:

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