2012-02-07 7 views
23

मैं विजुअल स्टूडियो 2010 "प्रकाशित करें ..." कमांड (वेब ​​अनुप्रयोग प्रोजेक्ट पर लागू) को दोहराने की कोशिश कर रहा हूं, जहां मैं यूआई में प्रकाशित विधि का चयन करूंगा: "फाइल सिस्टम"।स्थानीय फ़ाइल सिस्टम को लक्षित करने के लिए MsBuild MsDeployPublish का उपयोग कैसे करें?

यह है पर मेरे प्रयास ...

% MSBuild%/टी: MsDeployPublish/संपत्ति: MsDeployServiceUrl = "file: /// घ: \ MyDeploymentFolder"; MsDeployPublishMethod = "फाइल सिस्टम" "घ : \ MySourceFolder \ Project.csproj "

... और" फाइल सिस्टम "," फाइल सिस्टम "," लोकल "और कुछ अन्य लोगों की एक विधि की कोशिश की।

कि MsDeploy अभी भी एक आईआईएस सर्वर से पुश करने के लिए कोशिश कर रहा है त्रुटि मैं का अर्थ है:

"D:\MySourceFolder\Project.csproj" (MsDeployPub 
lish target) (1) -> 
(MSDeployPublish target) -> 
    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web 
.Publishing.targets(3847,5): error : Web deployment task failed.(The metabase k 
ey '/lm/w3svc' could not be found.) [D:\MySourceFolder\Project.csproj] 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.P 
ublishing.targets(3847,5): error : \r [D:\MySourceFolder\Project.csproj] 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.P 
ublishing.targets(3847,5): error : The metabase key '/lm/w3svc' could not be fo 
und.\r [D:\MySourceFolder\Project.csproj] 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.P 
ublishing.targets(3847,5): error : Unable to access the IIS configuration syste 
m. Please make sure you have IIS 7 (or later) installed.\r [D:\MySourceFolder\Project.csproj] 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.P 
ublishing.targets(3847,5): error : Retrieving the COM class factory for compone 
nt with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} failed due to the followin 
g error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REG 
DB_E_CLASSNOTREG)). [D:\MySourceFolder\Project.csproj] 

मैं तैनाती के लिए फाइल सिस्टम को कैसे लक्षित कर सकते हैं, दृश्य स्टूडियो सामान्य रूप से जीयूआई में मुझे देता है के रूप में?

+0

सी [कैसे एक विशिष्ट स्थान (nant) करने के लिए वेब अनुप्रयोग प्रकाशित करने के लिए?] (Http://stackoverflow.com/questions/2928595) –

उत्तर

0

मुझे नहीं लगता कि आप एमएसबिल्ड कह रहे हैं के साथ पर्याप्त विशिष्ट हैं।

विषय पर अपने बुकमार्क में से एक के बाहर इस कर लिया जाता, उम्मीद है कि यह मदद मिलेगी: http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

80

मेरा उत्तर के अनुसार Using MSBuild, how do I build an MVC4 solution from the command line (applying Web.config transformations in the process) and output to a folder?

msbuild ProjectFile.csproj /p:Configuration=Release^
          /p:Platform=AnyCPU^
          /t:WebPublish^
          /p:WebPublishMethod=FileSystem^
          /p:DeleteExistingFiles=True^
          /p:publishUrl=c:\output 

से या आप समाधान फ़ाइल का निर्माण कर रहे हैं:

msbuild Solution.sln /p:Configuration=Release^
        /p:DeployOnBuild=True^
        /p:DeployDefaultTarget=WebPublish^
        /p:WebPublishMethod=FileSystem^
        /p:DeleteExistingFiles=True^
        /p:publishUrl=c:\output 
+6

इस इमारत की ही सर्वोपरि है वेब csproj फाइलें। – Matthew

+1

यदि आप विजुअल स्टूडियो 2013 के साथ बना रहे हैं, तो आपको 'वेबपब्लिश' लक्ष्य मौजूद नहीं होने पर त्रुटि मिलने पर '/ p: VisualStudioVersion = 12.0' जोड़ने का प्रयास करें। – Matthew

+0

यदि आप इसे बिल्ड सर्वर (टीमसिटी) के लिए खोज रहे हैं, तो 'लक्ष्य:' फ़ील्ड में निर्दिष्ट करें: WebPublish पुनर्निर्माण करें, और दृश्य स्टूडियो इंस्टॉल किए बिना एजेंट सर्वर पर वेबपublशिंग काम करने के लिए यह उत्तर देखें: http: // stackoverflow .com/एक/24245360/2901207 – CularBytes

2

मैंने एमएसबिल्ड को तैनाती वाली वेब फ़ाइलों की प्रतिलिपि बनाने की कोशिश करने को छोड़ दिया (और इसके अलावा कुछ भी नहीं), इसलिए मैंने इसे PowerShell में लिपि परिणाम के साथ वास्तव में खुश हूँ। एमएसबिल्ड के माध्यम से मैंने कोशिश की तुलना में बहुत तेज़। यहाँ सार (literally) है:

function copy-deployable-web-files($proj_path, $deploy_dir) { 
    # copy files where Build Action = "Content" 
    $proj_dir = split-path -parent $proj_path 
    [xml]$xml = get-content $proj_path 
    $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % { 
    $from = "$proj_dir\$_" 
    $to = split-path -parent "$deploy_dir\$_" 
    if (!(test-path $to)) { md $to } 
    cp $from $to 
    } 

    # copy everything in bin 
    cp "$proj_dir\bin" $deploy_dir -recurse 
} 
संबंधित मुद्दे