Bagaimana cara Mempublikasikan Web dengan msbuild?

216

Visual Studio 2010 memiliki perintah Publikasikan yang memungkinkan Anda untuk mempublikasikan Proyek Aplikasi Web Anda ke lokasi sistem file. Saya ingin melakukan ini di server build TeamCity saya, jadi saya perlu melakukannya dengan solusi runner atau msbuild. Saya mencoba menggunakan target Publikasikan, tetapi saya pikir itu mungkin untuk ClickOnce:

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

Saya pada dasarnya ingin melakukan apa yang dilakukan proyek penyebaran web, tetapi tanpa tambahan. Saya memerlukannya untuk mengkompilasi WAP, menghapus file yang tidak perlu untuk dieksekusi, melakukan transformasi web.config , dan menyalin output ke lokasi yang ditentukan.

Solusi saya , berdasarkan jawaban Jeff Siver

<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
sumber
kemungkinan rangkap: stackoverflow.com/questions/1162253/...
Steven Evers
@SnOrfus Saat ini saya menggunakan Web Deployment Projects di VS 2008 (seperti yang saya sebutkan dalam jawaban saya untuk pertanyaan itu) tetapi saya ingin mencoba mengotomatiskan fitur Publikasikan VS 2010 sebagai gantinya.
jrummell
Pertanyaan ini terlihat membantu stackoverflow.com/questions/1983575/…
jrummell
2
Hanya satu perubahan kecil pada skrip Anda: Anda menggunakan $ (ProjectPath) untuk skrip deploy tetapi Anda benar-benar menginginkannya adalah $ (ProjectDir) jika tidak, Anda berakhir dengan .csproj \ obj
Troy Hunt
2
Dimulai dengan VS2012, ini jauh lebih mudah: stackoverflow.com/a/13947667/270348
RobSiklos

Jawaban:

137

Saya mendapatkannya sebagian besar bekerja tanpa skrip msbuild kustom. Berikut adalah pengaturan konfigurasi build TeamCity yang relevan:

Jalur artefak:% system.teamcity.build.workingDir% \ MyProject \ obj \ Debug \ Package \ PackageTmp 
Jenis pelari: MSBuild (Pelari untuk file MSBuild) 
Buat jalur file: MyProject \ MyProject.csproj 
Direktori kerja: sama dengan direktori checkout 
Versi MSBuild: Microsoft .NET Framework 4.0 
MSBuild ToolsVersion: 4.0 
Jalankan platform: x86 
Target: Paket 
Parameter baris perintah ke MSBuild.exe: / p: Configuration = Debug

Ini akan mengkompilasi, mengemas (dengan transformasi web.config), dan menyimpan output sebagai artefak. Satu-satunya hal yang hilang adalah menyalin output ke lokasi yang ditentukan, tetapi itu bisa dilakukan baik dalam konfigurasi membangun TeamCity lain dengan ketergantungan artefak atau dengan skrip msbuild.

Memperbarui

Berikut ini adalah skrip msbuild yang akan dikompilasi, paket (dengan transformasi web.config), dan salin hasilnya ke server staging saya

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

Anda juga bisa menghapus properti SolutionName dan ProjectName dari tag PropertyGroup dan meneruskannya ke msbuild.

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

Perbarui 2

Karena pertanyaan ini masih mendapatkan banyak traffic, saya pikir layak untuk memperbarui jawaban saya dengan skrip saya saat ini yang menggunakan Web Deploy (juga dikenal sebagai MSDeploy).

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

Di TeamCity, saya memiliki parameter bernama env.Configuration, env.ProjectNamedan env.DeployServiceUrl. Pelari MSBuild memiliki path file build dan parameter dilewatkan secara otomatis (Anda tidak harus menentukannya dalam parameter baris perintah).

Anda juga dapat menjalankannya dari baris perintah:

msbuild build.xml /p:Configuration=Staging;ProjectName=MyProject;DeployServiceUrl=http://staging-server/MSDeployAgentService
Jrummell
sumber
2
terima kasih - ini juga berfungsi dengan baik langsung dari PowerShell (permintaan maaf untuk pemformatan - tidak ada carriage return dalam komentar): & msbuild "$ solution" / p: "Configuration = $ configuration"; & msbuild "$ project" / t: Package / p: "Configuration = $ configuration; _PackageTempDir = $ outputfolder"
zcrar70
Saya mencoba contoh dari Pembaruan pertama Anda dan tampaknya Packagetargetnya juga bergantung pada WebDeploy: 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.(Sebutkan sejak Anda menulis bahwa pembaruan kedua Anda menggunakan WebDeploy, yang mungkin menyiratkan bahwa yang pertama belum menggunakan WebDeploy.)
chiccodoro
@ jrummell: Saya ingin menggunakan proyek web Visual Studio saya ke server Windows jarak jauh dari TeamCity. Apa yang harus saya lakukan. Saya seorang pemula dan tidak tahu harus berbuat apa
Nevin Raj Victor
1
Saya bisa mendapatkan ini untuk bekerja di TeamCity dengan Proyek Aplikasi Web, tetapi saya juga memiliki PROYEK Situs Web terikat warisan yang saya juga perlu menerbitkan (sebagai paket) maka perlu menggunakan MSDeploy. Jika saya menerbitkan dalam VS2013 saya mendapatkan paket penerapan, tetapi MSBuild dari baris cmd tidak membuat satu. Adakah pikiran?
KnowHowSolutions
1
Saya tidak melihat penyebutan profil publikasi dalam hal ini. Publikasikan profil harus ditentukan sehingga transformasi web.config yang benar diterapkan. Pembaruan: Nevermind ... fitur itu diperkenalkan 2 tahun setelah posting ini. Yang ini mungkin masih berfungsi. Posting selanjutnya di utas ini menunjukkan cara mempublikasikan dengan profil publikasikan dari baris perintah.
Triynko
84

Menggunakan profil penyebaran yang diperkenalkan di VS 2012, Anda dapat menerbitkan dengan baris perintah berikut:

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

Untuk informasi lebih lanjut tentang parameter, lihat ini .

Nilai untuk /p:VisualStudioVersionparameter tergantung pada versi Visual Studio Anda. Wikipedia memiliki tabel rilis Visual Studio dan versinya .

Chris
sumber
6
Menggunakan VS2012. NET 3.5, ini tidak berfungsi untuk digunakan ke sistem file. Itu hanya membangun dan tidak menyebarkan.
Jay Sullivan
2
/p:VisualStudioVersion=11.0 Anda menyelamatkan hidup saya. Saya menggunakan /p:VisualStudioVersion=12.0 untuk vs2013 dan berfungsi dengan baik.
Seyed Morteza Mousavi
Apa nilai /p:VisualStudioVersion=?untuk VS 2017?
Nishant
membuat skrip build 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 ...... Tapi tetap hanya mendapatkan DLL tidak semua file seperti di publikasikan folder: (`
Nishant
@Nishant Untuk VS 2017, gunakan /p:VisualStudioVersion=15. Saya tidak yakin apakah ini terkait dengan masalah penyalinan file Anda.
Chris
38

Saya datang dengan solusi seperti itu, bekerja sangat baik untuk saya:

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

Saus rahasianya adalah target _WPPCopyWebApplication.

Alexander Beletsky
sumber
1
Apa itu _WPPCopyWebApplication dan bagaimana saya dapat menggunakannya file konfigurasi MSBbuild xml /
Johnny_D
4
Menggunakan VS2012. NET 3.5, saya mendapat kesalahan error MSB4057: The target "_WPPCopyWebApplication" does not exist in the project. Mengambil bagian itu menyebabkan penyebaran tanpa mengerahkan pandangan
Jay Sullivan
Anda mungkin perlu menyebutnya dengan /p:VisualStudioVersion=12.0 berbeda karena build menggunakan target dari c: \ file program (x86) \ msbuild \ microsoft \ visualstudio \ VERSION \ Webapplication \ Microsoft.WebApplication.targets jadi mungkin itu menggunakan versi lama yang tidak memiliki target yang benar.
Jim Wolff
@FRoZeN Saya mencoba menggunakan MSBuild sebagai 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. Itu memberi saya kesalahan MSBUILD : error MSB1008: Only one project can be specified. Switch: WebSite/New. Apakah ada solusi untuk ini?
Nevin Raj Victor
1
@NevinRajVictor kesalahan itu kemungkinan karena Anda memiliki ruang dalam nilai DeployIisAppPath. Anda harus memasukkan nilai dalam tanda kutip. mis / p: DeployIisAppPath = "Situs Web Default / Baru"
shiitake
27

Saya tidak tahu TeamCity jadi saya harap ini bisa bekerja untuk Anda.

Cara terbaik yang saya temukan untuk melakukan ini adalah dengan MSDeploy.exe. Ini adalah bagian dari proyek WebDeploy yang dijalankan oleh Microsoft. Anda dapat mengunduh bit di sini .

Dengan WebDeploy, Anda menjalankan baris perintah

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

Ini melakukan hal yang sama dengan perintah VS Publish, hanya menyalin bit yang diperlukan ke folder penempatan.

Jeff Siver
sumber
Itu terlihat menjanjikan. Namun, sepertinya Layanan Manajemen hanya tersedia di Server 2008. Server pementasan saya (tempat saya ingin mengotomatiskan penerapan) menjalankan Windows 7 Pro.
jrummell
2
Ada dua bagian untuk produk. Potongan-potongan yang terintegrasi langsung ke IIS memerlukan Server 2008. Komponen baris perintah tidak memiliki persyaratan itu; Saya menjalankannya di kotak Server 2003 yang saya gunakan untuk penyebaran.
Jeff Siver
Saya sudah membaca di MSDeploy. Saya menginstalnya dan bekerja di server pementasan saya, terima kasih! Bisakah saya menjalankan MSDeploy dari skrip MSBuild?
jrummell
1
apakah hal yang sama seperti konfigurasi perintah VS Publish? Yang mempublikasikan metode - sistem file atau lainnya? Apakah ini menggunakan file MyProject.Publish.xml untuk menentukan file mana yang akan disalin?
Anthony
1
Saya hanya mencobanya tetapi tidak melakukan hal yang sama seperti VS Publish. Itu melakukan hal yang sama seperti XCopy termasuk semua file sumber.
Louis Somers
13

Dengan VisualStudio 2012 ada cara untuk menangani subj tanpa mempublikasikan profil. Anda dapat melewati folder keluaran menggunakan parameter. Ini berfungsi baik dengan path absolut dan relatif dalam parameter 'publishUrl'. Anda dapat menggunakan VS100COMNTOOLS, namun Anda harus mengganti VisualStudioVersion untuk menggunakan target 'WebPublish' dari %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets. Dengan VisualStudioVersion 10.0 skrip ini akan berhasil tanpa output :)

Pembaruan: Saya telah berhasil menggunakan metode ini pada server build dengan hanya Windows SDK 7.1 diinstal (tidak ada Visual Studio 2010 dan 2012 pada mesin). Tetapi saya harus mengikuti langkah-langkah ini untuk membuatnya bekerja:

  1. Jadikan Windows SDK 7.1 terkini pada mesin menggunakan jawaban Simmo ( https://stackoverflow.com/a/2907056/2164198 )
  2. Mengatur Kunci Registri HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ SxS \ VS7 \ 10.0 ke "C: \ Program Files \ Microsoft Visual Studio 10.0 \" (gunakan jalur Anda sebagaimana mestinya)
  3. Menyalin folder% ProgramFiles% \ MSBuild \ Microsoft \ VisualStudio \ v11.0 dari mesin pengembang saya untuk membangun server

Naskah:

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%
Ivan Samygin
sumber
Terima kasih atas solusi ini - inilah yang saya cari: opsi WebPublish dengan penyebaran sistem file.
Woohoo
12

menemukan dua solusi berbeda yang bekerja dengan cara yang sedikit berbeda:

1. Solusi ini terinspirasi oleh jawaban dari alexanderb [tautan] . Sayangnya itu tidak bekerja untuk kita - beberapa dll tidak disalin ke OutDir. Kami menemukan bahwa mengganti ResolveReferencesdengan Buildtarget menyelesaikan masalah - sekarang semua file yang diperlukan disalin ke lokasi OutDir.

msbuild / target: Build; _WPPCopyWebApplication / p: Konfigurasi = Rilis; OutDir = C: \ Tmp \ myApp \ MyApp.csproj
Kerugian dari solusi ini adalah kenyataan bahwa OutDir tidak hanya berisi file untuk dipublikasikan.

2. Solusi pertama berfungsi dengan baik tetapi tidak seperti yang kami harapkan. Kami ingin memiliki fungsionalitas publish seperti di Visual Studio IDE - yaitu hanya file yang harus dipublikasikan yang akan disalin ke direktori Output. Seperti yang telah disebutkan solusi pertama menyalin lebih banyak file ke dalam OutDir - situs web untuk penerbitan kemudian disimpan_PublishedWebsites/{ProjectName} subfolder. Perintah berikut menyelesaikan ini - hanya file yang akan dipublikasikan yang akan disalin ke folder yang diinginkan. Jadi sekarang Anda memiliki direktori yang dapat langsung dipublikasikan - dibandingkan dengan solusi pertama Anda akan menghemat ruang pada hard drive.

msbuild / target: Build; PipelinePreDeployCopyAllFilesToOneFolder / p: Konfigurasi = Rilis; _PackageTempDir = C: \ Tmp \ myApp \; AutoParameterizationWebConfigConnectionStrings = false MyApp.csproj
AutoParameterizationWebConfigConnectionStrings=falseparameter akan menjamin bahwa string koneksi tidak akan ditangani sebagai artefak khusus dan akan dihasilkan dengan benar - untuk informasi lebih lanjut lihat tautan .

Pavel Cermak
sumber
Opsi Anda # 2 membantu saya menyingkirkan _CopyWebApplication yang usang. Anda menyelamatkan Build-Server saya setelah memutakhirkan ke VS 2015. Penelitian hebat. Menghargai.
it3xl
Opsi Anda # 2 sempurna untuk skrip build saya.
AnthonyVO
3

Anda harus mengatur lingkungan Anda

  • <Nama WebSite>
  • <domain>

dan referensi blog saya. (posting maaf adalah bahasa Korea)

  • 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
Kim Ki Won
sumber
1

Ini file batch saya

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
Alim İŞÇİ
sumber
5
Akan lebih bagus jika Anda bisa merinci jawaban Anda. Bagaimana tepatnya file batch Anda memecahkan masalah OP? Terima kasih!
Luís Cruz
1

ini adalah batch kerja saya

publish-my-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%

Perhatikan bahwa saya menginstal Visual Studio di server agar dapat berjalan MsBuild.exekarena MsBuild.exefolder .Net Framework tidak berfungsi.

Alper Ebicoglu
sumber
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 ...... Tapi masih hanya mendapatkan DLL bukan struktur file yang saya inginkan. Apakah ada yang salah? :(
Nishant
1

Anda dapat Mempublikasikan Solusi dengan jalur yang diinginkan dengan kode di bawah ini, Here PublishInDFolder adalah nama yang memiliki jalur tempat kami perlu menerbitkan (kita perlu membuatnya di gambar di bawah ini)

Anda dapat membuat file terbitkan seperti ini

Tambahkan di bawah 2 baris kode dalam file batch (.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
pradeep sk
sumber
0

Untuk menghasilkan keluaran publikasi, berikan satu parameter lagi. msbuild example.sln / p: publishprofile = profilename / p: deployonbuild = true / p: konfigurasi = debug / atau

Yashwant Mahawar
sumber