दिलचस्प पोस्ट
मैं जावा में एक विंडोज़ ड्राइव कैसे माउंट कर सकता हूँ? मैं एंड्रॉइड एमुलेटर में जीमेल कैसे कॉन्फ़िगर करूं? ओरेकल: यदि टेबल मौजूद है पायथन में ''> 0 सच क्यों है? मुद्रण संवाद बॉक्स के बिना जावास्क्रिप्ट प्रिंट यहां दस्तावेज़ 'फ़ाइल का अनपेक्षित अंत' त्रुटि देता है org.xml.sax.SAXParseException: सामग्री prolog में अनुमति नहीं है किसी संख्या में मैं अंकों की कुल संख्या कैसे प्राप्त करूं? कैसे ProgressBar अद्यतनों के साथ एक BackgroundWorker को सही ढंग से लागू करने के लिए? डाटाबेस सर्वर से कनेक्ट नहीं किया जा सकता (mysql workbench) क्या JAXB समर्थन xsd: प्रतिबंध? इकाई फ़्रेमवर्क 4 इकाई संग्रह से वस्तु हटाएं कोड का उपयोग करते हुए डिवाइस स्क्रीन आकार की श्रेणी (छोटे, सामान्य, बड़े, एक्सलर्ज) निर्धारित करने के लिए कैसे करें? जावा में चार में एट को परिवर्तित करें ऑटो एक्स {3} एक initializer_list निकाल क्यों करता है?

एमएसबिल्ड के साथ वेब कैसे प्रकाशित करें?

विजुअल स्टूडियो 2010 में एक प्रकाशित कमांड है जो आपको एक फ़ाइल सिस्टम स्थान पर अपने वेब अनुप्रयोग प्रोजेक्ट को प्रकाशित करने की अनुमति देता है। मैं इसे अपने टीमसिटी बिल्ड सर्वर पर करना चाहता हूं, इसलिए मुझे समाधान रनर या एमएसबिल्ड के साथ ऐसा करने की आवश्यकता है मैंने लक्ष्य को प्रकाशित करने का प्रयास किया, लेकिन मुझे लगता है कि यह क्लिकऑन के लिए हो सकता है:

msbuild Project.csproj /t:Publish /p:Configuration=Deploy 

मैं मूल रूप से वास्तव में यह करना चाहता हूं कि वेब परिनियोजन प्रोजेक्ट क्या करता है, लेकिन ऐड-इन के बिना मुझे इसे WAP संकलित करने की आवश्यकता है, किसी भी फाइल को निष्पादन के लिए अनावश्यक हटा दें, कोई वेब। कॉन्फ़िगर परिवर्तन करें , और एक निर्दिष्ट स्थान पर आउटपुट को कॉपी करें।

जेफ सिवर के उत्तर के आधार पर मेरा समाधान

 <Target Name="Deploy"> <MSBuild Projects="$(SolutionFile)" Properties="Configuration=$(Configuration);DeployOnBuild=true;DeployTarget=Package" ContinueOnError="false" /> <Exec Command="&quot;$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd&quot; /y /m:$(DeployServer) -enableRule:DoNotDeleteRule" ContinueOnError="false" /> </Target> 

वेब के समाधान से एकत्रित समाधान "एमएसबिल्ड के साथ वेब कैसे प्रकाशित करें?"

मुझे यह ज्यादातर कस्टम एमएसबिल्ड स्क्रिप्ट के बिना काम कर रहा था यहां प्रासंगिक टीमसिटी बिल्ड कॉन्फ़िगरेशन सेटिंग्स हैं:

 आर्टिफैक्ट पथ:% system.teamcity.build.workingDir% \ MyProject \ obj \ Debug \ Package \ PackageTmp 
 धावक का प्रकार: MSBuild (MSBuild फ़ाइलों के लिए धावक) 
 फ़ाइल पथ बनाएं: MyProject \ MyProject.csproj 
 कार्य निर्देशिका: चेकआउट निर्देशिका के समान 
 MSBuild संस्करण: Microsoft .NET Framework 4.0 
 MSBuild ToolsVersion: 4.0 
 भागो मंच: x86 
 लक्ष्य: पैकेज 
 MSBuild.exe के लिए कमांड लाइन पैरामीटर: / p: कॉन्फ़िगरेशन = डीबग

यह संकलित करेगा, पैकेज (web.config रूपांतरण के साथ), और आउटपुट को कलाकृतियों के रूप में सहेजता है। एकमात्र चीज़ लापता एक निर्दिष्ट स्थान पर आउटपुट की नकल कर रहा है, लेकिन यह किसी अन्य टीमसिटी बिल्ड कॉन्फ़िगरेशन में किसी artifact निर्भरता या एमएसबिल्ड स्क्रिप्ट के साथ किया जा सकता है।

अद्यतन करें

यहां एक एमएसबिल्ड स्क्रिप्ट है जो संकलित करेगा, पैकेज (web.config रूपांतरण के साथ), और आउटपुट को मेरे स्टेजिंग सर्वर पर कॉपी कर देगा

 <?xml version="1.0" encoding="utf-8" ?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <SolutionName>MySolution</SolutionName> <SolutionFile>$(SolutionName).sln</SolutionFile> <ProjectName>MyProject</ProjectName> <ProjectFile>$(ProjectName)\$(ProjectName).csproj</ProjectFile> </PropertyGroup> <Target Name="Build" DependsOnTargets="BuildPackage;CopyOutput" /> <Target Name="BuildPackage"> <MSBuild Projects="$(SolutionFile)" ContinueOnError="false" Targets="Rebuild" Properties="Configuration=$(Configuration)" /> <MSBuild Projects="$(ProjectFile)" ContinueOnError="false" Targets="Package" Properties="Configuration=$(Configuration)" /> </Target> <Target Name="CopyOutput"> <ItemGroup> <PackagedFiles Include="$(ProjectName)\obj\$(Configuration)\Package\PackageTmp\**\*.*"/> </ItemGroup> <Copy SourceFiles="@(PackagedFiles)" DestinationFiles="@(PackagedFiles->'\\build02\wwwroot\$(ProjectName)\$(Configuration)\%(RecursiveDir)%(Filename)%(Extension)')"/> </Target> </Project> 

आप PropertyGroup टैग से SolutionName और ProjectName गुणों को भी निकाल सकते हैं और उन्हें msbuild पर पास कर सकते हैं।

 msbuild build.xml /p:Configuration=Deploy;SolutionName=MySolution;ProjectName=MyProject 

अपडेट 2

चूंकि यह प्रश्न अभी भी एक अच्छा सौदा हो जाता है, मुझे लगता है कि यह मेरे वर्तमान स्क्रिप्ट के साथ मेरे उत्तर को अद्यतन करने के लिए उपयुक्त था जो कि वेब डेप्ले (जिसे एमएसडीईप के नाम से भी जाना जाता है) का उपयोग करता है।

 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <ProjectFile Condition=" '$(ProjectFile)' == '' ">$(ProjectName)\$(ProjectName).csproj</ProjectFile> <DeployServiceUrl Condition=" '$(DeployServiceUrl)' == '' ">http://staging-server/MSDeployAgentService</DeployServiceUrl> </PropertyGroup> <Target Name="VerifyProperties"> <!-- Verify that we have values for all required properties --> <Error Condition=" '$(ProjectName)' == '' " Text="ProjectName is required." /> </Target> <Target Name="Build" DependsOnTargets="VerifyProperties"> <!-- Deploy using windows authentication --> <MSBuild Projects="$(ProjectFile)" Properties="Configuration=$(Configuration); MvcBuildViews=False; DeployOnBuild=true; DeployTarget=MSDeployPublish; CreatePackageOnPublish=True; AllowUntrustedCertificate=True; MSDeployPublishMethod=RemoteAgent; MsDeployServiceUrl=$(DeployServiceUrl); SkipExtraFilesOnServer=True; UserName=; Password=;" ContinueOnError="false" /> </Target> </Project> 

टीमसिटी में, मेरे पास पैरामीटर नाम env.DeployServiceUrlenv.Configuration , env.ProjectName और env.DeployServiceUrl MSBuild धावक का निर्माण फ़ाइल पथ है और पैरामीटर स्वचालित रूप से पारित किए जाते हैं (आपको उन्हें कमांड लाइन पैरामीटर में निर्दिष्ट नहीं करना पड़ता है)

आप इसे कमांड लाइन से भी चला सकते हैं:

 msbuild build.xml /p:Configuration=Staging;ProjectName=MyProject;DeployServiceUrl=http://staging-server/MSDeployAgentService 

वीएस 2012 में पेश किए जाने वाले परिनियोजन प्रोफाइल का उपयोग करके, आप निम्न कमांड लाइन के साथ प्रकाशित कर सकते हैं:

 msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name> /p:Password=<insert-password> /p:VisualStudioVersion=11.0 

पैरामीटर पर अधिक जानकारी के लिए यह देखें ।

मैं इस तरह के समाधान के साथ आया, मेरे लिए महान काम करता है:

 msbuild /t:ResolveReferences;_WPPCopyWebApplication /p:BuildingProject=true;OutDir=C:\Temp\build\ Test.csproj 

गुप्त सॉस _WPPCopyWebApplication लक्ष्य है

मुझे टीमसिटी पता नहीं है इसलिए मुझे आशा है कि यह आपके लिए काम कर सकता है।

सबसे अच्छा तरीका मैंने यह करने के लिए मिला है MSDeploy.exe के साथ है। यह माइक्रोसॉफ्ट द्वारा चलाए जा रहे वेबडिपोर्ट प्रोजेक्ट का हिस्सा है I आप यहां बिट्स डाउनलोड कर सकते हैं ।

WebDeploy के साथ, आप कमांड लाइन चलाते हैं

 msdeploy.exe -verb:sync -source:contentPath=c:\webApp -dest:contentPath=c:\DeployedWebApp 

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

दो अलग-अलग समाधान पाए गए जो थोड़ा अलग तरीके से काम करते थे:

1. यह समाधान एलेक्साडरब [लिंक] से जवाब से प्रेरित है दुर्भाग्यवश यह हमारे लिए काम नहीं कर रहा था – कुछ डीएलएल को आउटडीयर में कॉपी नहीं किया गया था। हमें पता चला है कि Build लक्ष्य के साथ ResolveReferences जगह समस्या हल करती है – अब सभी आवश्यक फ़ाइलें आउटडिर स्थान में कॉपी की जाती हैं।

  एमएसबिल्ड / लक्ष्य: बिल्ड; _WPPCopyWebApplication / p: कॉन्फ़िगरेशन = रिलीज़; आउटडिर = सी: \ Tmp \ myApp \ MyApp.csproj 

इस समाधान का नुकसान यह तथ्य था कि आउटडिर में प्रकाशित करने के लिए न केवल फाइलें थीं।

2. पहला समाधान अच्छी तरह से काम करता है, लेकिन जैसा कि हम उम्मीद नहीं करते हम प्रकाशित कार्यक्षमता चाहते हैं क्योंकि यह दृश्य स्टूडियो आईडीई में है – यानी केवल उन फाइलों को प्रकाशित किया जाना चाहिए जो आउटपुट डायरेक्टरी में कॉपी की जाएंगी। जैसा कि पहले से ही पहले समाधान का उल्लेख किया गया है, _PublishedWebsites/{ProjectName} में बहुत अधिक फाइलें कॉपी की गई हैं – प्रकाशित करने के लिए वेबसाइट को तब प्रकाशित किया गया है, _PublishedWebsites/{ProjectName} सबफ़ोल्डर निम्न कमांड इसको हल करती है – केवल प्रकाशित करने के लिए फ़ाइलें वांछित फ़ोल्डर में कॉपी की जाएंगी। तो अब आपके पास निर्देशिका है जिसे सीधे प्रकाशित किया जा सकता है – पहले समाधान के साथ तुलना में आप हार्ड ड्राइव पर कुछ स्थान सहेज सकते हैं।

  एमएसबिल्ड / लक्ष्य: बिल्ड; पाइपलाइनप्रेडिशनकापीएल्फ़ाइलसभी फ़ोल्डर्स / पी: कॉन्फ़िगरेशन = रिलीज; _PackageTempDir = C: \ Tmp \ myApp \: ऑटोपारामैटिज़ेशनवाबकॉन्फ़िगनैक्शनःट्रिंग = झूठी MyApp.csproj 

AutoParameterizationWebConfigConnectionStrings=false पैरामीटर गारंटी देगा कि कनेक्शन स्ट्रिंग को विशेष कलाकृतियों के रूप में नहीं संभाला जाएगा और सही ढंग से उत्पन्न हो जाएगा – अधिक जानकारी के लिए लिंक देखें

VisualStudio 2012 के साथ प्रकाशित प्रोफ़ाइल के बिना subj को संभालने का एक तरीका है। आप मापदंडों का उपयोग करके आउटपुट फ़ोल्डर पास कर सकते हैं। यह 'publishUrl' पैरामीटर में निरपेक्ष और सापेक्ष पथ दोनों के साथ काम करता है। आप VS100COMNTOOLS का उपयोग कर सकते हैं, हालांकि आप VisualStudioVersion को ओवरराइड करने के लिए %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets WebApplications %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets से लक्ष्य 'WebPublish' का उपयोग करने की आवश्यकता है। VisualStudioVersion 10.0 के साथ यह स्क्रिप्ट कोई आउटपुट के साथ सफल होगी 🙂

अद्यतन: मैंने इस पद्धति का उपयोग केवल एक विंडोज़ एसडीके 7.1 स्थापित (एक मशीन पर कोई दृश्य स्टूडियो 2010 और 2012) के साथ बिल्ड सर्वर पर करने में कामयाब रहा है। लेकिन मुझे यह काम करने के लिए इन चरणों का पालन करना पड़ा:

  1. Simmo उत्तर का उपयोग कर मशीन पर विंडोज एसडीके 7.1 चालू करें ( https://stackoverflow.com/a/2907056/2164198 )
  2. रजिस्ट्री कुंजी को HKEY_LOCAL_MACHINE सॉफ़्टवेयर \ Microsoft \ VisualStudio \ SxS \ VS7 \ 10.0 से "सी: \ प्रोग्राम फ़ाइलें माइक्रोसॉफ्ट विजुअल स्टूडियो 10.0 \" सेट करना (उपयुक्त के रूप में अपने पथ का उपयोग करें)
  3. फ़ोल्डर का निर्माण% ProgramFiles% \ MSBuild \ Microsoft \ VisualStudio \ v11.0 मेरे डेवलपर मशीन से सर्वर बनाने के लिए

स्क्रिप्ट:

 set WORK_DIR=%~dp0 pushd %WORK_DIR% set OUTPUTS=%WORK_DIR%..\Outputs set CONFIG=%~1 if "%CONFIG%"=="" set CONFIG=Release set VSTOOLS="%VS100COMNTOOLS%" if %VSTOOLS%=="" set "PATH=%PATH%;%WINDIR%\Microsoft.NET\Framework\v4.0.30319" && goto skipvsinit call "%VSTOOLS:~1,-1%vsvars32.bat" if errorlevel 1 goto end :skipvsinit msbuild.exe Project.csproj /t:WebPublish /p:Configuration=%CONFIG% /p:VisualStudioVersion=11.0 /p:WebPublishMethod=FileSystem /p:publishUrl=%OUTPUTS%\Project if errorlevel 1 goto end :end popd exit /b %ERRORLEVEL% 

आपको अपना वातावरण सेट करना होगा

  • <वेब साइट का नाम>
  • <domain>

और मेरा ब्लॉग संदर्भ। (माफ करना पोस्ट कोरियाई था)

  • http://xyz37.blog.me/50124665657
  • http://blog.naver.com/PostSearchList.nhn?SearchText=webdeploy&blogId=xyz37&x=25&y=7

     @ECHO OFF :: http://stackoverflow.com/questions/5598668/valid-parameters-for-msdeploy-via-msbuild ::-DeployOnBuild -True :: -False :: ::-DeployTarget -MsDeployPublish :: -Package :: ::-Configuration -Name of a valid solution configuration :: ::-CreatePackageOnPublish -True :: -False :: ::-DeployIisAppPath -<Web Site Name>/<Folder> :: ::-MsDeployServiceUrl -Location of MSDeploy installation you want to use :: ::-MsDeployPublishMethod -WMSVC (Web Management Service) :: -RemoteAgent :: ::-AllowUntrustedCertificate (used with self-signed SSL certificates) -True :: -False :: ::-UserName ::-Password SETLOCAL IF EXIST "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" SET FXPath="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" IF EXIST "%SystemRoot%\Microsoft.NET\Framework\v3.5" SET FXPath="%SystemRoot%\Microsoft.NET\Framework\v3.5" IF EXIST "%SystemRoot%\Microsoft.NET\Framework\v4.0.30319" SET FXPath="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319" SET targetFile=<web site fullPath ie. .\trunk\WebServer\WebServer.csproj SET configuration=Release SET msDeployServiceUrl=https://<domain>:8172/MsDeploy.axd SET msDeploySite="<WebSite name>" SET userName="WebDeploy" SET password=%USERNAME% SET platform=AnyCPU SET msbuild=%FXPath%\MSBuild.exe /MaxCpuCount:%NUMBER_OF_PROCESSORS% /clp:ShowCommandLine %MSBuild% %targetFile% /p:configuration=%configuration%;Platform=%platform% /p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=False /p:DeployIISAppPath=%msDeploySite% /p:MSDeployPublishMethod=WMSVC /p:MsDeployServiceUrl=%msDeployServiceUrl% /p:AllowUntrustedCertificate=True /p:UserName=%USERNAME% /p:Password=%password% /p:SkipExtraFilesOnServer=True /p:VisualStudioVersion=12.0 IF NOT "%ERRORLEVEL%"=="0" PAUSE ENDLOCAL 

यह मेरी बैच फ़ाइल

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\Projects\testPublish\testPublish.csproj /p:DeployOnBuild=true /property:Configuration=Release if exist "C:\PublishDirectory" rd /q /s "C:\PublishDirectory" C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p C:\Projects\testPublish\obj\Release\Package\PackageTmp -c C:\PublishDirectory cd C:\PublishDirectory\bin del *.xml del *.pdb