এমএসবিল্ড দিয়ে কীভাবে ওয়েব প্রকাশ করবেন?


216

ভিজ্যুয়াল স্টুডিও 2010 এর একটি প্রকাশিত কমান্ড রয়েছে যা আপনাকে আপনার ওয়েব অ্যাপ্লিকেশন প্রকল্পটি কোনও ফাইল সিস্টেমের স্থানে প্রকাশ করতে দেয়। আমি আমার টিমসিটি বিল্ড সার্ভারে এটি করতে চাই, তাই সমাধান রুনার বা এমএসবিল্ড দিয়ে আমার এটি করা দরকার। আমি প্রকাশের লক্ষ্যটি ব্যবহার করার চেষ্টা করেছি, তবে আমি মনে করি এটি ক্লিকঅনসের জন্য হতে পারে:

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

আমি মূলত কোনও ওয়েব ডিপ্লোয়মেন্ট প্রকল্প যা করে তা করতে চাই তবে অ্যাড-ইন ছাড়াই। আমার ডাব্লুএপি সংকলন করা, মৃত্যুদন্ড কার্যকর করার জন্য অপ্রয়োজনীয় যে কোনও ফাইল অপসারণ করা, যে কোনও ওয়েবকনফিগ ট্রান্সফর্মেশন সম্পাদন করা এবং আউটপুট নির্দিষ্ট স্থানে অনুলিপি করা দরকার।

আমার সমাধান , জেফ সিভারের উত্তরের উপর ভিত্তি করে

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


@ এসএনআরফাস আমি বর্তমানে ভিএস ২০০৮ সালে ওয়েব ডিপ্লোয়মেন্ট প্রকল্পগুলি ব্যবহার করছি (যেমন আমি আমার প্রশ্নের উত্তরে উল্লেখ করেছি) তবে আমি এর পরিবর্তে ভিএস ২০১০ এর প্রকাশিত বৈশিষ্ট্যটি স্বয়ংক্রিয় করার চেষ্টা করতে চাই।
jrummell

এই প্রশ্নের সহায়ক দেখায় stackoverflow.com/questions/1983575/...
jrummell

2
আপনার স্ক্রিপ্টের জন্য কেবলমাত্র একটি সামান্য সংশোধন: আপনি নিযুক্ত স্ক্রিপ্টের জন্য $ (প্রজেক্টপথ) ব্যবহার করছেন তবে আপনি সত্যই চান is (প্রজেক্টডির) অন্যথায় আপনি .csproj \জেজকের সাথে শেষ করেন
ট্রয় হান্ট

2
: VS2012 থেকে শুরু করে এই অনেক সহজ stackoverflow.com/a/13947667/270348
RobSiklos

উত্তর:


137

আমি এটি বেশিরভাগই কাস্টম এমএসবিল্ড স্ক্রিপ্ট ব্যতীত কাজ করতে পেয়েছি। এখানে প্রাসঙ্গিক টিমসিটি বিল্ড কনফিগারেশন সেটিংস রয়েছে:

আর্টিক্যাক্ট পাথ:% system.teamcity.build.workingDir% \ মাইপ্রজেক্ট \জেজ \ ডিবাগ \ প্যাকেজ \ প্যাকেজ টিম্প 
রানার প্রকার: এমএসবিল্ড (এমএসবিল্ড ফাইলগুলির জন্য রানার) 
ফাইলের পাথ তৈরি করুন: মাইপ্রজেক্ট \ মাইপ্রজেক্ট। স্প্রোজ 
ওয়ার্কিং ডিরেক্টরি: চেকআউট ডিরেক্টরি হিসাবে একই 
এমএস বিল্ড সংস্করণ: মাইক্রোসফ্ট। নেট ফ্রেমওয়ার্ক 4.0 
এমএস বিল্ড টুলস সংস্করণ: ৪.০ 
প্ল্যাটফর্ম চালান: x86 
লক্ষ্যসমূহ: প্যাকেজ 
কমান্ড লাইন পরামিতিগুলি MSBuild.exe: / p: কনফিগারেশন = ডিবাগ

এটি সংকলন, প্যাকেজ (ওয়েবকনফিগ ট্রান্সফর্মেশন সহ) এবং আউটপুটকে শিল্পকর্ম হিসাবে সংরক্ষণ করবে। কেবলমাত্র অনুপস্থিত জিনিসটি নির্দিষ্ট স্থানে আউটপুট অনুলিপি করা, তবে এটি আর্টিম্যাক্ট নির্ভরতা বা কোনও এমএসবিল্ড স্ক্রিপ্টের সাহায্যে অন্য টিমসিটি বিল্ড কনফিগারেশনে করা যেতে পারে।

হালনাগাদ

এখানে একটি এমসবিল্ড স্ক্রিপ্ট রয়েছে যা সংকলন করবে, প্যাকেজ করবে (ওয়েবকনফিগ রূপান্তর সহ), এবং আমার স্টেজিং সার্ভারে আউটপুটটি অনুলিপি করবে

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

আপনি সম্পত্তিগ্রুপ ট্যাগ থেকে সলিউশননাম এবং প্রজেক্টনাম বৈশিষ্ট্যগুলি সরাতে এবং এগুলি এমএসবিল্ডে দিতে পারেন।

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

আপডেট 2

যেহেতু এই প্রশ্নটি এখনও ট্র্যাফিকের খুব ভাল সুযোগ পেয়েছে তাই আমি ভেবেছিলাম যে আমার উত্তরটি আমার বর্তমান স্ক্রিপ্টের সাথে আপডেট করা মূল্যবান যা ওয়েব ডিপ্লয় ব্যবহার করে (এমএসডিপপ্লয় নামেও পরিচিত) uses

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

TeamCity, আমি নামক প্যারামিটার আছে env.Configuration, env.ProjectNameএবং env.DeployServiceUrl। এমএসবিল্ড রানারটির বিল্ড ফাইলের পাথ রয়েছে এবং প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে পাস করা হয়েছে (আপনাকে সেগুলি কমান্ড লাইন প্যারামিটারে নির্দিষ্ট করতে হবে না)।

আপনি এটি কমান্ড লাইন থেকে চালাতে পারেন:

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

2
ধন্যবাদ - এটি পাওয়ারশেল থেকে সরাসরি কাজ করে (বিন্যাসের জন্য ক্ষমাপ্রার্থী - মন্তব্যে কোনও ক্যারেজ ফেরেনি): & মিসবিল্ড "$ সমাধান" / পি: "কনফিগারেশন = $ কনফিগারেশন"; & মিসবিল্ড "$ প্রকল্প" / টি: প্যাকেজ / পি: "কনফিগারেশন = $ কনফিগারেশন; _PackageTempDir = $ আউটপুটফোল্ডার"
zcrar70

আমি আপনার প্রথম আপডেটের থেকে উদাহরণটি চেষ্টা করেছি এবং দেখে মনে হচ্ছে Packageলক্ষ্যটি ওয়েবডাইপ্লয়ের উপরও নির্ভর করে: error : Package/Publish task Microsoft.Web.Publishing.Tasks.IsCleanMSDeployPackageNeeded failed to load Web Deploy assemblies. Microsoft Web Deploy is not correctly installed on this machine.এটির উল্লেখ করে যেহেতু আপনি লিখেছেন যে আপনার দ্বিতীয় আপডেটটি ওয়েবডেপ্লয় ব্যবহার করে, যা বোঝাতে পারে যে প্রথমটি এখনও ওয়েবডাইপ্লয় ব্যবহার করবে না।)
চিককোডোরো

@ জড়ুমেল: আমি আমার ভিজ্যুয়াল স্টুডিও ওয়েব প্রকল্প টিমসিটি থেকে একটি রিমোট উইন্ডোজ সার্ভারে স্থাপন করতে চাই। আমার কি করা উচিৎ. আমি একটি শিক্ষানবিস এবং কী করব সে সম্পর্কে কোনও ধারণা নেই
নেভিন রাজ ভিক্টর

1
আমি ওয়েব অ্যাপ্লিকেশন প্রকল্পগুলির সাথে টিমসিটিতে কাজ করতে সক্ষম হয়েছি, তবে আমারও একটি উত্তরাধিকারসূত্রে আবদ্ধ ওয়েবসাইট প্রকল্প রয়েছে যা আমারও প্রকাশ করতে হবে (প্যাকেজ হিসাবে) তারপরে এমএসডিপ্লয় ব্যবহার করা দরকার। আমি যদি ভিএস ২০১৩ এর মধ্যে প্রকাশ করি তবে আমি একটি ডিপ্লোয়মেন্ট প্যাকেজ পাই, তবে সেমিডি লাইন থেকে এমএসবিল্ড একটি তৈরি করে না। কোন চিন্তা?
জেনে নিন সলিউশনগুলি

1
আমি এতে প্রকাশিত প্রোফাইলের কোনও উল্লেখ দেখতে পাচ্ছি না। প্রোফাইল প্রকাশ করা নির্দিষ্ট করা উচিত যাতে সঠিক ওয়েবকনফিগ ট্রান্সফর্ম প্রয়োগ করা হয়। আপডেট: কিছুই নয় ... এই পোস্টটির 2 বছর পরে এই বৈশিষ্ট্যটি চালু হয়েছিল। এটি সম্ভবত এখনও কাজ করে। এই থ্রেডের পরবর্তী পোস্টে কমান্ড লাইন থেকে প্রকাশের প্রোফাইলের মাধ্যমে কীভাবে প্রকাশ করা যায় তা দেখানো হয়।
ট্রায়ঙ্কো

84

ভিএস 2012-এ প্রবর্তিত প্রোফাইলগুলি ব্যবহার করে আপনি নিম্নলিখিত কমান্ড লাইনের সাহায্যে প্রকাশ করতে পারেন:

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

পরামিতিগুলির আরও তথ্যের জন্য এটি দেখুন

/p:VisualStudioVersionপ্যারামিটারের মানগুলি আপনার ভিজ্যুয়াল স্টুডিওর সংস্করণের উপর নির্ভর করে। উইকিপিডিয়ায় ভিজ্যুয়াল স্টুডিও রিলিজ এবং তাদের সংস্করণগুলির একটি সারণী রয়েছে


6
VS2012 .NET 3.5 ব্যবহার করে এটি ফাইল সিস্টেমে মোতায়েনের জন্য কাজ করে নি। এটি কেবল নির্মান করে এবং কোনও স্থাপনাও করে না।
জে সুলিভান

2
আপনার /p:VisualStudioVersion=11.0 আমার জীবন বাঁচিয়েছে। আমি vsp33 এর জন্য /p:VisualStudioVersion=12.0 এবং এর কাজগুলি সূক্ষ্মভাবে ব্যবহার করি।
সৈয়দ মুর্তেজা মুসাবি 19

/p:VisualStudioVersion=?ভিএস 2017 এর মান কত হবে ?
নিশান্ত

বিল্ড স্ক্রিপ্ট তৈরি করেছে msbuild test.sln /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=.\build_output1\pub /p:PublishProfile=FolderProfile /p:VisualStudioVersion=11.0 /p:outdir=.\build_output1 ...... তবে এখনও কেবলমাত্র ডিএলএল পাওয়া সমস্ত ফাইল প্রকাশিত ফোল্ডারের মতো নয়: (`
নিশান্ত

@ নিশান্ট ফর ভিএস 2017, ব্যবহার করুন /p:VisualStudioVersion=15। এটি আপনার ফাইল অনুলিপি করার সাথে সম্পর্কিত কিনা তা আমি নিশ্চিত নই।
ক্রিস

38

আমি এই জাতীয় সমাধান নিয়ে এসেছি, আমার জন্য দুর্দান্ত কাজ করে:

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

গোপন সস _WPPCopyWeb অ্যাপ্লিকেশন লক্ষ্য।


1
_ডব্লিউপিপি কপিওয়েব অ্যাপ্লিকেশন কী এবং আমি কীভাবে এটি ব্যবহার করতে পারি এমএসবি বিল্ড এক্সএমএল কনফিগারেশন ফাইল /
জনি_ডি

4
VS2012 .NET 3.5 ব্যবহার করে, আমি ত্রুটি পেয়েছি error MSB4057: The target "_WPPCopyWebApplication" does not exist in the project। এই অংশটি গ্রহণ করার কারণে কোনও মতামত মোতায়েন না করেই মোতায়েনের দিকে নিয়ে যায়
জে সুলিভান

আপনাকে এটিকে অন্য /p:VisualStudioVersion=12.0 দিয়ে কল করতে হবে কারণ বিলটি সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ এমএসবিল্ড \ মাইক্রোসফ্ট, ভিজ্যুয়াল স্টুডিও ERS সংস্করণ \ ওয়েব অ্যাপ্লিকেশন \ মাইক্রোসফ্ট.ওয়েব অ্যাপ্লিকেশন.টারজেটস থেকে লক্ষ্যগুলি ব্যবহার করে তাই সম্ভবত এটি ব্যবহার করে পুরানো সংস্করণটির সঠিক লক্ষ্য নেই।
জিম ওল্ফ

@FRoZeN আমি এমএসবাইল্ড হিসাবে ব্যবহার করার চেষ্টা করেছি MSBuild.exe C:\BuildAgent\work\4c7b8ac8bc7d723e\WebService.sln /p:Configuration=Release /p:OutputPath=bin /p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MsDeployServiceUrl=https://204.158.674.5/msdeploy.axd /p:username=Admin /p:password=Password#321 /p:AllowUntrustedCertificate=True /p:DeployIisAppPath=Default WebSite/New /p:MSDeployPublishMethod=WMSVC। এটি আমাকে একটি ত্রুটি দেয় MSBUILD : error MSB1008: Only one project can be specified. Switch: WebSite/New। এটির কোন সমাধান আছে?
নেভিন রাজ ভিক্টর

1
@ নবীনরাজভিক্টর যে ত্রুটি সম্ভবত কারণ DeployIisAppPath মান আপনার একটি স্থান আছে। আপনাকে মানগুলি উদ্ধৃতিতে লাগাতে হবে। যেমন; / p &: DeployIisAppPath = "ডিফল্ট ওয়েবসাইট / নতুন"
shiitake

27

আমি টিমসিটি জানি না তাই আমি আশা করি এটি আপনার পক্ষে কাজ করতে পারে।

এটির সবচেয়ে ভাল উপায়টি আমি খুঁজে পেয়েছি D এটি মাইক্রোসফ্ট দ্বারা পরিচালিত ওয়েবডেপ্লয় প্রকল্পের অংশ। আপনি এখানে বিট ডাউনলোড করতে পারেন ।

WebDeploy দিয়ে আপনি কমান্ড লাইনটি চালান run

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

এটি ভিএস প্রকাশিত কমান্ডের মতো একই কাজ করে, কেবলমাত্র প্রয়োজনীয় বিটগুলি ডিপ্লোয়মেন্ট ফোল্ডারে অনুলিপি করে।


আশাব্যঞ্জক মনে হচ্ছে। তবে দেখে মনে হচ্ছে ম্যানেজমেন্ট সার্ভিসটি কেবল সার্ভার ২০০৮ এ উপলব্ধ My
jrummell

2
পণ্য দুটি টুকরা আছে। আইআইএসে ডানদিকে সংহত হওয়া টুকরাগুলির জন্য সার্ভার ২০০ require প্রয়োজন The কমান্ড লাইনের উপাদানটির প্রয়োজনীয়তা নেই; আমার এটি সার্ভার 2003 বাক্সে চলছে যা আমি মোতায়েনের জন্য ব্যবহার করি।
জেফ সিভার

আমি এমএসডেপ্লয়ে কিছু রিডিং করেছি। আমি এটি ইনস্টল করে আমার স্টেজে সার্ভারে কাজ করেছিলাম, ধন্যবাদ! আমি কি এমএসবিল্ড স্ক্রিপ্ট থেকে এমএসডিপ্লয় চালাতে পারি?
জুরমেল

1
ভিএস প্রকাশিত কমান্ডের কোন কনফিগারেশন হিসাবে একই জিনিস রয়েছে? কোন প্রকাশের পদ্ধতি - ফাইল সিস্টেম বা অন্য? কোন ফাইলটি অনুলিপি করতে হবে তা নির্ধারণ করতে এটি কি মাইপ্রজেক্ট.পাবলিশ.এক্সএমএল ফাইল ব্যবহার করে?
অ্যান্টনি

1
আমি এটিকে কেবল একটি শট দিয়েছি তবে এটি ভিএস প্রকাশের মতো করে নি। এটি সমস্ত উত্স ফাইল সহ এক্সকপির মতোই করেছে।
লুই সামারস

13

ভিজ্যুয়ালস্টুডিও 2012 এর সাথে প্রোফাইলগুলি প্রকাশ না করে সাবজ হ্যান্ডেল করার একটি উপায় রয়েছে। আপনি পরামিতি ব্যবহার করে আউটপুট ফোল্ডারটি পাস করতে পারেন। এটি 'প্রকাশের' প্যারামিটারে পরম এবং আপেক্ষিক পাথ উভয়ই কাজ করে। আপনি VS100COMNTOOLS ব্যবহার করতে পারেন তবে লক্ষ্য 'ওয়েবপাবলিশ' থেকে লক্ষ্যটি ব্যবহার করতে আপনাকে ভিজ্যুয়াল স্টুডিওভিশনটি ওভাররাইড করতে হবে %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets। ভিজুয়ালস্টুডিওভিশন 10.0 এর সাথে এই স্ক্রিপ্টটি কোনও আউটপুট ছাড়াই সফল হবে :)

আপডেট: আমি কেবল উইন্ডোজ এসডিকে 7.1 ইনস্টল করা (কোনও মেশিনে ভিজ্যুয়াল স্টুডিও 2010 এবং 2012 নেই) সহ একটি বিল্ড সার্ভারে এই পদ্ধতিটি ব্যবহার করতে সক্ষম হয়েছি। তবে এটি কার্যকর করতে আমাকে এই পদক্ষেপগুলি অনুসরণ করতে হয়েছিল:

  1. সিমো উত্তর ব্যবহার করে কোনও মেশিনে উইন্ডোজ এসডিকে 7.1 বর্তমান করুন ( https://stackoverflow.com/a/2907056/2164198 )
  2. রেজিস্ট্রি কী সেট করা HKEY_LOCAL_MACHINE OF সফ্টওয়্যার \ মাইক্রোসফ্ট, ভিজ্যুয়াল স্টুডিও \ এসএক্সএস \ ভিএস 7 \ 10.0 থেকে "সি: \ প্রোগ্রাম ফাইলগুলি \ মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 10.0 \" (আপনার পথ যথাযথভাবে ব্যবহার করুন)
  3. সার্ভার বানাতে আমার বিকাশকারী মেশিন থেকে% প্রোগ্রাম ফাইল%% এমএসবিল্ড B মাইক্রোসফ্ট \ ভিজ্যুয়ালস্টুডিও St 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%

এই সমাধানের জন্য ধন্যবাদ - এটি আমি যা খুঁজছিলাম: ফাইল সিস্টেম স্থাপনের সাথে ওয়েবপাবলিশ বিকল্প।
ওহাহু

12

দুটি ভিন্ন সমাধান পাওয়া গেছে যা কিছুটা ভিন্ন উপায়ে কাজ করেছে:

1. এই সমাধানটি আলেকজান্দারব [লিঙ্ক] এর উত্তর দ্বারা অনুপ্রাণিত । দুর্ভাগ্যক্রমে এটি আমাদের পক্ষে কার্যকর হয়নি - কিছু dll এর আউটডায়ারে অনুলিপি করা হয়নি। আমরা এটির ResolveReferencesসাথে প্রতিস্থাপন করেছিBuild টার্গেটের সমস্যার সমাধান করে - এখন সমস্ত প্রয়োজনীয় ফাইলগুলি আউটডিরের জায়গায় অনুলিপি করা হয়।

এমএসবিল্ড / টার্গেট: বিল্ড; _ডব্লিউপিপিসিপি ওয়েব অ্যাপ্লিকেশন / পি: কনফিগারেশন = প্রকাশ; আউটডির = সি: \ টিএমপি \ মাইএপ \ মাইএপসিএসপ্রোজ
এই সমাধানের অসুবিধেটি এই ছিল যে আউটডায়ারে প্রকাশের জন্য কেবল ফাইলই ছিল না।

২. প্রথম সমাধানটি ভালভাবে কাজ করে তবে আমাদের প্রত্যাশা মতো নয়। আমরা ভিজ্যুয়াল স্টুডিও আইডিইতে প্রকাশিত কার্যকারিতাটি রাখতে চাইছিলাম - অর্থাত কেবল প্রকাশিত হওয়া ফাইলগুলি আউটপুট ডিরেক্টরিতে অনুলিপি করা হবে। এটি ইতিমধ্যে উল্লিখিত হয়েছে যে প্রথম সমাধানটি আউটডায়ারে আরও অনেকগুলি অনুলিপি করে - প্রকাশের জন্য ওয়েবসাইটটি তখন সংরক্ষণ করা হয়_PublishedWebsites/{ProjectName} সাবফোল্ডারে । নিম্নলিখিত কমান্ড এটি সমাধান করে - কেবল প্রকাশের জন্য ফাইলগুলি কাঙ্ক্ষিত ফোল্ডারে অনুলিপি করা হবে। সুতরাং এখন আপনার কাছে ডিরেক্টরি রয়েছে যা সরাসরি প্রকাশ করা যেতে পারে - প্রথম সমাধানের সাথে তুলনায় আপনি হার্ড ড্রাইভে কিছু জায়গা সাশ্রয় করবেন।

এমএসবিল্ড / টার্গেট: বিল্ড; পাইপলাইনপ্রেডপ্লোইকপিআলফাইলসটোনফোল্ডার / পি: কনফিগারেশন = রিলিজ; _PackageTempDir = সি: \ টিএমপি App মাই অ্যাপ \; অটোপ্যারমেটারাইজেশন ওয়েবেকনফিগসিঙ্কেশনসট্রিংস = মিথ্যা মাই অ্যাপ্লিকেশন
AutoParameterizationWebConfigConnectionStrings=falseপ্যারামিটার গ্যারান্টি দেয় যে সংযোগের স্ট্রিংগুলি বিশেষ নিদর্শন হিসাবে পরিচালনা করা হবে না এবং সঠিকভাবে উত্পন্ন হবে - আরও তথ্যের জন্য লিঙ্কটি দেখুন


আপনার বিকল্প # 2 আমাকে অবিচ্ছিন্ন _ কপিওয়েব অ্যাপ্লিকেশনটি থেকে নির্বিঘ্নে মুক্তি দিতে সহায়তা করেছে। আপনি ভিএস 2015 তে আপগ্রেড করার পরে আমার বিল্ড-সার্ভারটি উদ্ধার করেছেন Great দুর্দান্ত গবেষণা। গুণগ্রাহী।
it3xl

আপনার বিকল্প # 2 আমার বিল্ড স্ক্রিপ্টের জন্য উপযুক্ত ছিল।
অ্যান্টনিভিও

3

আপনাকে অবশ্যই আপনার পরিবেশ নির্ধারণ করতে হবে

  • <ওয়েবসাইটের নাম>
  • <ডোমেন>

এবং আমার ব্লগ রেফারেন্স। (দুঃখিত পোস্ট কোরিয়ান ছিল)

  • 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

1

এটি আমার ব্যাচের ফাইল

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

5
আপনার উত্তরটি বিস্তারিত জানাতে পারলে দুর্দান্ত হবে। আপনার ব্যাচের ফাইলটি ঠিক কিভাবে ওপির সমস্যা সমাধান করে? ধন্যবাদ!
লুস ক্রুজ

1

এটা আমার কর্ম ব্যাচ

প্রকাশ-মাই-website.bat

SET MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin"
SET PUBLISH_DIRECTORY="C:\MyWebsitePublished"
SET PROJECT="D:\Github\MyWebSite.csproj"


cd /d %MSBUILD_PATH%
MSBuild %PROJECT%  /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=%PUBLISH_DIRECTORY%

নোট করুন যে আমি চালাতে সক্ষম হতে সার্ভারে ভিজ্যুয়াল স্টুডিও ইনস্টল করেছি MsBuild.exeকারণ MsBuild.exeনেট নেট ফ্রেমওয়ার্ক ফোল্ডারগুলি কাজ করে না।


msbuild test.sln /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=.\build_output1\pub /p:PublishProfile=FolderProfile /p:VisualStudioVersion=11.0 /p:outdir=.\build_output1 ...... তবে তবুও কেবলমাত্র ডিএলএল পাচ্ছি যে ফাইলগুলির কাঠামো চান তা নয়। এতে কী ভুল? :(
নিশান্ত

1

আপনি নীচের কোডটি দ্বারা পছন্দসই পথ সহ সমাধানটি প্রকাশ করতে পারেন, এখানে প্রকাশনাবিডিএফফোল্ডার এমন একটি নাম যা আমাদের যেখানে প্রকাশ করতে হবে সেই পথটি রয়েছে (আমাদের এটি নীচের ছবিতে তৈরি করতে হবে)

আপনি এভাবে প্রকাশিত ফাইল তৈরি করতে পারেন

ব্যাচ ফাইলে 2 টি লাইনের কোড যুক্ত করুন (.bat)

@echo OFF 
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsMSBuildCmd.bat"
MSBuild.exe  D:\\Solution\\DataLink.sln /p:DeployOnBuild=true /p:PublishProfile=PublishInDFolder
pause

0

প্রকাশিত আউটপুট উত্পন্ন করার জন্য আরও একটি প্যারামিটার সরবরাহ করুন। মিসবিল্ড উদাহরণ.স্লেন / পি: প্রকাশপ্রোফাইল = প্রোফাইল নাম / পি: ডিপ্লোইনবিল্ড = সত্য / পি: কনফিগারেশন = ডিবাগ / বা অন্য কোনও

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.