Msbuild ile Web Nasıl Yayınlanır?


216

Visual Studio 2010, Web Uygulama Projenizi bir dosya sistemi konumuna yayımlamanıza olanak sağlayan bir Yayınla komutuna sahiptir. Bunu TeamCity derleme sunucumda yapmak istiyorum, bu yüzden çözüm runner veya msbuild ile yapmam gerekiyor. Yayınlama hedefini kullanmayı denedim, ancak bunun ClickOnce için olabileceğini düşünüyorum:

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

Temelde bir web dağıtım projesinin tam olarak ne yaptığını yapmak istiyorum, ancak eklenti olmadan. WAP derlemek, yürütme için gereksiz tüm dosyaları kaldırmak, herhangi bir web.config dönüşümleri gerçekleştirmek ve belirtilen bir konuma çıktı kopyalamak gerekir.

Benim Çözüm Jeff Siver en yanıta göre,

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


@SnOrfus Şu anda VS 2008'de Web Dağıtım Projeleri kullanıyorum (bu soruya cevabımda belirttiğim gibi) ama bunun yerine VS 2010'un Yayınlama özelliğini otomatikleştirmeyi denemek istiyorum.
jrummell

Bu soru faydalı görünüyor stackoverflow.com/questions/1983575/…
jrummell

2
Betiğinizde sadece küçük bir değişiklik: konuşlandırma betiği için $ (ProjectPath) kullanıyorsunuz, ancak gerçekten istediğiniz $ (ProjectDir), aksi takdirde .csproj \ obj
Troy Hunt

2
VS2012 ile başlayarak, bu çok daha kolay: stackoverflow.com/a/13947667/270348
RobSiklos

Yanıtlar:


137

Çoğunlukla özel bir msbuild betiği olmadan çalıştım. İlgili TeamCity derleme yapılandırma ayarları şunlardır:

Yapay yollar:% system.teamcity.build.workingDir% \ MyProject \ obj \ Debug \ Package \ PackageTmp 
Koşucu türü: MSBuild (MSBuild dosyaları için koşucu) 
Derleme dosya yolu: MyProject \ MyProject.csproj 
Çalışma dizini: ödeme dizini ile aynı 
MSBuild sürümü: Microsoft .NET Framework 4.0 
MSBuild Araçları Sürüm: 4.0 
Çalışma platformu: x86 
Hedefler: Paket 
MSBuild.exe komut satırı parametreleri: / p: Configuration = Debug

Bu derlenir, paketlenir (web.config dönüşümü ile) ve çıktıyı yapay olarak kaydeder. Eksik olan tek şey, çıktıyı belirtilen bir konuma kopyalamaktır, ancak bu başka bir TeamCity derleme yapılandırmasında bir yapay nesne bağımlılığıyla veya bir msbuild komut dosyasıyla yapılabilir.

Güncelleme

İşte derleme, paketleme (web.config dönüşümü ile) ve çıktısı hazırlama sunucuma kopyalayacak bir msbuild betiği

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

SolutionName ve ProjectName özelliklerini PropertyGroup etiketinden kaldırabilir ve msbuild'e iletebilirsiniz.

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

Güncelleme 2

Bu soru hala iyi bir trafik aldığından, cevabımı Web Deploy'u (MSDeploy olarak da bilinir) kullanan mevcut komut dosyanızla güncellemeye değer olduğunu düşündüm .

<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'de env.Configuration, env.ProjectNameve adlı parametreler var env.DeployServiceUrl. MSBuild koşucusu derleme dosyası yoluna sahiptir ve parametreler otomatik olarak iletilir (bunları Komut satırı parametrelerinde belirtmeniz gerekmez).

Komut satırından da çalıştırabilirsiniz:

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

2
teşekkürler - bu aynı zamanda doğrudan powershell'den de iyi çalışır (biçimlendirme için özür - yorumlarda satır başı döndürülmez): & msbuild "$ solution" / p: "Configuration = $ configuration"; & msbuild "$ project" / t: Paket / p: "Yapılandırma = $ yapılandırma; _PackageTempDir = $ outputfolder"
zcrar70

İlk Güncellemenizdeki örneği denedim ve Packagehedefin WebDeploy'a da bağlı olduğu görülüyor: 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.(İkinci güncellemenizin WebDeploy'u kullandığını yazdığınızdan bahsetmek, ilkinin henüz WebDeploy'u kullanmayacağını ima edebilir.)
chiccodoro

@jrummell: Visual Studio web projemi TeamCity'den uzak bir Windows sunucusuna dağıtmak istiyorum. Ne yapmalıyım. Ben bir acemiyim ve ne yapacağım hakkında hiçbir fikrim yok
Nevin Raj Victor

1
Web Uygulama Projeleri ile TeamCity üzerinde çalışmak için bunu elde edebiliyorum, ama aynı zamanda (paket olarak) yayınlamak ve sonra MSDeploy kullanmak gerekir eski bağlı Web Sitesi PROJE var. VS2013 içinde yayınlarsam bir dağıtım paketi alırım, ancak cmd satırından MSBuild bir tane oluşturmaz. Düşüncesi olan var mı?
KnowHowSolutions

1
Bu konuda yayınlama profilinden hiç bahsetmiyorum. Yayınlama profili, doğru web.config dönüşümü uygulanacak şekilde belirtilmelidir. Güncelleme: Nevermind ... bu özellik bu yayından 2 yıl sonra tanıtıldı. Bu hala muhtemelen işe yarıyor. Bu başlıktaki sonraki yazı, komut satırından bir yayınlama profiliyle nasıl yayınlanacağını gösterir.
Triynko

84

VS 2012'de tanıtılan dağıtım profillerini kullanarak aşağıdaki komut satırıyla yayınlayabilirsiniz:

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

Parametreler hakkında daha fazla bilgi için buna bakın .

/p:VisualStudioVersionParametrenin değerleri Visual Studio sürümünüze bağlıdır. Wikipedia'da bir Visual Studio sürümleri ve sürümleri tablosu vardır .


6
VS2012 .NET 3.5 kullanarak, bu, dosya sistemine dağıtmak için işe yaramadı. Basitçe oluşturur ve dağıtım yapmaz.
Jay Sullivan

2
/p:VisualStudioVersion=11.0 sizin hayatımı kurtardı. /20: /20: VisualStudioVersion=12.0'ı vs2013 ve işleri için kullanıyorum.
Seyed Morteza Mousavi

/p:VisualStudioVersion=?VS 2017'nin değeri ne olacak ?
Nishant

Oluşturulan komut dosyası oluşturdu 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 ...... Ancak yine de yayınlama klasöründeki tüm dosyaları değil sadece DLL'leri alıyorum: (``
Nishant

@Nishant VS 2017 için kullanın /p:VisualStudioVersion=15. Bunun dosya kopyalama sorununuzla ilgili olup olmadığından emin değilim.
Chris

38

Böyle bir çözüm buldum, benim için harika çalışıyor:

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

Gizli sos _WPPCopyWebApplication hedefidir.


1
Ne _WPPCopyWebApplication nedir ve nasıl kullanabilirim MSBbuild xml yapılandırma dosyası /
Johnny_D

4
VS2012 .NET 3.5 kullanarak hatayı aldım error MSB4057: The target "_WPPCopyWebApplication" does not exist in the project. Bu parçayı çıkarmak, herhangi bir görüş dağıtmadan konuşlandırmaya yol açtı
Jay Sullivan

Farklı bir /p:VisualStudioVersion=12.0 ile çağırmanız gerekebilir çünkü build c: \ program dosyalarından (x86) \ msbuild \ microsoft \ visualstudio \ VERSION \ Webapplication \ Microsoft.WebApplication.targets adresindeki hedefleri kullandığından doğru hedefe sahip olmayan eski sürüm.
Jim Wolff

@FRoZeN MSBuild olarak kullanmayı denedim 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. Bana bir hata veriyor MSBUILD : error MSB1008: Only one project can be specified. Switch: WebSite/New. Bunun için bir çözüm var mı?
Nevin Raj Victor

1
@NevinRajVictor, DeployIisAppPath değerinde bir boşluğunuz olduğu için büyük olasılıkla bu hatanın olabilir. Değeri tırnak içine almanız gerekir. eg / p: DeployIisAppPath = "Varsayılan Web Sitesi / Yeni"
shiitake

27

TeamCity'yi bilmiyorum, umarım bu senin için işe yarayabilir.

Bunu yapmanın en iyi yolu MSDeploy.exe. Bu, Microsoft tarafından yürütülen WebDeploy projesinin bir parçasıdır. Sen bitleri indirebilirsiniz burada .

WebDeploy ile komut satırını çalıştırırsınız

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

Bu, VS Publish komutuyla aynı şeyi yapar ve yalnızca gerekli bitleri dağıtım klasörüne kopyalar.


Bu umut verici görünüyor. Ancak, Yönetim Hizmeti yalnızca Server 2008'de kullanılabilir gibi görünüyor. Evreleme sunucum (dağıtımı otomatikleştirmek istediğim yerde) Windows 7 Pro çalıştırıyor.
jrummell

2
Üründe iki parça vardır. IIS ile tümleştirilen parçalar için Server 2008 gerekir. Komut satırı bileşeninin bu gereksinimi yoktur; Dağıtımlar için kullandığım bir Server 2003 kutusunda çalıştırıyorum.
Jeff Siver

MSDeploy'da biraz okuma yaptım. Kuruldum ve evreleme sunucum üzerinde çalıştım, teşekkürler! MSDeploy'u bir MSBuild komut dosyasından çalıştırabilir miyim?
jrummell

1
VS komutunun hangi yapılandırmasıyla aynı şey nedir? Hangi yayınlama yöntemi - dosya sistemi veya diğer? Hangi dosyaların kopyalanacağını belirlemek için MyProject.Publish.xml dosyasını kullanıyor mu?
Anthony

1
Sadece denedim ama VS Publish ile aynı şeyi yapmadım. Tüm kaynak dosyaları dahil olmak üzere XCopy ile aynı şeyi yaptı.
Louis Somers

13

VisualStudio 2012 ile yayınlama profilleri olmadan subj işlemek için bir yol vardır. Çıktı klasörünü parametreleri kullanarak iletebilirsiniz. 'PublishUrl' parametresinde hem mutlak hem de göreceli yolla çalışır. VS100COMNTOOLS kullanabilirsiniz, ancak hedef 'WebPublish' kullanmak için VisualStudioVersion geçersiz kılmanız gerekir %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets. VisualStudioVersion 10.0 ile bu komut dosyası çıkış olmadan başarılı olacaktır :)

Güncelleştirme: Bu yöntemi yalnızca Windows SDK 7.1 yüklü bir yapı sunucusunda kullanmayı başardım (bir makinede Visual Studio 2010 ve 2012 yok). Ama çalışmasını sağlamak için şu adımları izlemem gerekti:

  1. Simmo yanıtı kullanarak Windows SDK 7.1'i bir makinede güncel tutun ( https://stackoverflow.com/a/2907056/2164198 )
  2. Kayıt Defteri Anahtarını HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ SxS \ VS7 \ 10.0'i "C: \ Program Files \ Microsoft Visual Studio 10.0 \" olarak ayarlama (yolunuzu uygun şekilde kullanın)
  3. % ProgramFiles% \ MSBuild \ Microsoft \ VisualStudio \ v11.0 klasörü, sunucu oluşturmak için geliştirici makinemden kopyalanıyor

Senaryo:

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%

Bu çözüm için teşekkürler - aradığım şey bu: Dosya sistemi dağıtımıyla WebPublish seçeneği.
woohoo

12

biraz farklı bir şekilde çalışan iki farklı çözüm buldu:

1. Bu çözüm alexanderb [link] ' ten gelen cevaptan esinlenmiştir . Ne yazık ki bizim için işe yaramadı - bazı dll's OutDir kopyalanmadı. Biz değiştirilmesi öğrendim ResolveReferencesile Buildartık tüm gerekli dosyaları OutDir konuma kopyalanır - hedefin sorunu çözer.

msbuild / target: Derleme; _WPPCopyWebApplication / p: Configuration = Release; OutDir = C: \ Tmp \ myApp \ MyApp.csproj
Bu çözümün dezavantajı, OutDir'in sadece yayınlanacak dosyaları içermemesiydi.

2. İlk çözüm iyi çalışıyor ama beklediğimiz gibi değil. Visual Studio IDE'de olduğu gibi yayınlama işlevselliğine sahip olmak istedik - yani yalnızca yayınlanması gereken dosyalar Çıktı dizinine kopyalanacaktır. Daha önce de belirtildiği gibi, çözüm daha fazla dosyayı OutDir'e kopyalar - yayınlama web sitesi daha sonra _PublishedWebsites/{ProjectName}alt klasörde saklanır . Aşağıdaki komut bunu çözer - yalnızca yayınlanacak dosyalar istenen klasöre kopyalanır. Artık doğrudan yayınlanabilecek bir dizine sahipsiniz - ilk çözümle karşılaştırıldığında sabit diskte biraz yer kazanacaksınız.

msbuild / target: Build; PipelinePreDeployCopyAllFilesToOneFolder / p: Configuration = Release; _PackageTempDir = C: \ Tmp \ myApp \; AutoParameterizationWebConfigConnectionStrings = yanlış MyApp.csproj
AutoParameterizationWebConfigConnectionStrings=falseparametresi, bağlantı dizelerinin özel yapay nesneler olarak ele alınmayacağını ve doğru şekilde oluşturulacağını garanti eder - daha fazla bilgi için bağlantıya bakın .


2 numaralı seçeneğiniz, eski _CopyWebApplication uygulamasından sorunsuz bir şekilde kurtulmama yardımcı oldu. VS 2015'e yükselttikten sonra Build-Server'ımı kurtardın. Harika bir araştırma. Takdir eden.
it3xl

Seçenek # 2, oluşturma komut dosyam için mükemmeldi.
AnthonyVO

3

Ortamlarınızı ayarlamanız gerekir

  • <Web Sitesi adı>
  • <alan adı>

ve benim blog referans. (üzgünüm yazı Korece idi)

  • 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

Bu benim toplu iş dosyam

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
Cevabınızı detaylandırabilmeniz harika olurdu. Toplu iş dosyanız OP'nin sorununu tam olarak nasıl çözüyor? Teşekkürler!
Luís Cruz

1

bu benim çalışma grubum

yayımlamak-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%

Ben sunucu üzerinde Visual Studio yüklü olduğu Not çalıştırmak için muktedir MsBuild.exeçünkü MsBuild.exe.Net Framework klasörlerinde işi yok.


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 ...... Ama yine de istediğim dosya yapısını değil sadece DLL alma. Bunun nesi var? :(
Nishant

1

Çözümü aşağıdaki kodla istenen yolla yayınlayabilirsiniz, İşte PublishInDFolder yayınlamamız gereken yola sahip olan addır (bunu aşağıdaki resimde oluşturmamız gerekir)

Bunun gibi yayınlama dosyası oluşturabilirsiniz

Toplu iş dosyasına (.bat) 2 satır kodun altına ekleyin

@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

Yayınlama çıktısını oluşturmak için bir parametre daha sağlayın. msbuild example.sln / p: yayınlaprofil = profilename / p: deployonbuild = true / p: configuration = debug / veya herhangi biri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.