2012-02-15 11 views
7

क्या एक वेब परिनियोजन पैकेज बनाना संभव है जिसमें एक क्लिकऑन एप्लिकेशन है जिसे मानक वेब डिप्लॉय टूल का उपयोग कर वेब सर्वर पर तैनात किया जा सकता है?एक क्लिकऑन वेब डिप्लॉय पैकेज बनाएं

  1. MSBuild "YourFullyQualifiedProjectName.csproj/vbproj"/टी:: पैकेज
  2. obj \ डीबग \ पैकेज \ YourFullyQualifiedProjectName.deploy.cmd/वाई

यहाँ आदर्श प्रक्रिया होगी

इसके पीछे तर्क यह होगा कि हम वेब पैकेज सहित पूरे समाधान का निर्माण कर सकते हैं, सभी परीक्षण चला सकते हैं, फिर परीक्षण पास होने के बाद ही तैनात कर सकते हैं।

मैंने वर्तमान में एक अस्थायी फ़ोल्डर में फ़ाइल-आधारित तैनाती करने की कोशिश की है, इसे एक वेब प्रोजेक्ट में कॉपी करें, फिर वेब प्रोजेक्ट को पैकेज करें। क्या एक साफ समाधान है?

+0

क्या आप केवल क्लिकऑन सामग्री का वेब डिप्लॉय पैकेज बनाना चाहते हैं या आप इसे वेब प्रोजेक्ट पैकेज में शामिल करना चाहते हैं जो वेब प्रोजेक्ट के लिए जेनरेट हो जाता है (यानी समाधान में एक अलग प्रोजेक्ट जो एक वेब प्रोजेक्ट है) ? –

+0

केवल क्लिकऑन सामग्री थी जिसे मुझे तैनात करने की आवश्यकता थी। – danielrbradley

उत्तर

9

मैं http://sedodream.com/2012/02/18/HowToCreateAWebDeployPackageWhenPublishingAClickOnceProject.aspx जो अधिक जानकारी के है, लेकिन प्रासंगिक टुकड़े नीचे

हैं आप एक ग्राहक परियोजना है जो आप तो आप यह कर सकते से बाहर एक ClickOnce पैकेज बनाने के लिए चाहते हैं, तो इस के लिए एक ब्लॉग बनाया है ।

अपने क्लाइंट प्रोजेक्ट के लिए प्रोजेक्ट फ़ाइल संपादित करें और नीचे निम्न को जोड़ें (</Project> टैग से ऊपर)।

<PropertyGroup> 
    <!--Unless specified otherwise, the tools will go to HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1 to get the installpath for msdeploy.exe.--> 
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\[email protected])</MSDeployPath> 
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\[email protected])</MSDeployPath> 
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\[email protected])</MSDeployPath> 
    <MSDeployExe Condition=" '$(MSDeployExe)'=='' ">$(MSDeployPath)msdeploy.exe</MSDeployExe> 
    </PropertyGroup> 

    <Target Name="CreateWebDeployPackage" AfterTargets="Publish" DependsOnTargets="Publish"> 
    <!-- 
    %msdeploy% 
     -verb:sync 
     -source:contentPath="C:\Temp\_NET\WebPackageWithClickOnce\WebPackageWithClickOnce\bin\Debug\app.publish" 
     -dest:package="C:\Temp\_NET\WebPackageWithClickOnce\WebPackageWithClickOnce\bin\Debug\co-pkg.zip" 
     --> 
    <PropertyGroup> 
     <Cmd>"$(MSDeployExe)" -verb:sync -source:contentPath="$(MSBuildProjectDirectory)\$(PublishDir)" -dest:package="$(OutDir)cotest.zip"</Cmd> 
    </PropertyGroup> 

    <Message Text="Creating web deploy package with command: $(Cmd)" /> 
    <Exec Command="$(Cmd)" /> 
    </Target> 

PropertyGroup में मैं कर रहा हूँ:

  • वेब तैनाती पैकेज
  • के नाम घोषित करने को देखने के लिए जहां MSDeploy स्थापित किया गया है

उसके बाद CreateWebDeployPackage परिभाषित किया गया है की कोशिश कर रहा है जो प्रकाशित लक्ष्य के बाद निष्पादित किया जाएगा (AfterTargets = "केवल प्रकाशित करें")। वह लक्ष्य आउटपुट निर्देशिका में पैकेज बनाने के लिए msdeploy.exe पर कॉल करेगा। आपको उस पैकेज को लेने और इसे प्रकाशित करने में सक्षम होना चाहिए क्योंकि आप कोई अन्य पैकेज करेंगे।

क्या आप इसे आजमा सकते हैं और मुझे बता सकते हैं कि यह आपके लिए काम करता है या नहीं?

+0

यह शानदार है, बहुत ही पूर्ण समाधान के लिए धन्यवाद, बहुत सराहना की! – danielrbradley

+1

+1 मेरा मानना ​​है कि अगर पूछा जाता है, तो सईड एमएसबिल्ड – mCasamento

+1

@mCasamento के साथ एस्प्रेसो कॉफी बनाने में सक्षम है, मैं चाहता हूं कि मैं एमएसबिल्ड का उपयोग करके एस्प्रेसो बना सकूं। मुझे $$$ का एक टन बचाएगा :) –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^