Aracılığıyla paylaş


ASP.NET Core uygulama dağıtımı için Visual Studio yayımlama profilleri (.pubxml)

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Tarafından Sayed Ibrahim Hashimi ve Rick Anderson

Bu belge, yayımlama profilleri oluşturmak ve kullanmak için Visual Studio 2019 veya üzerini kullanmaya odaklanır. Visual Studio ile oluşturulan yayımlama profilleri MSBuild ve Visual Studio ile kullanılabilir. Azure'da yayımlama yönergeleri için bkz . Visual Studio ile ASP.NET Core uygulamasını Azure'da yayımlama.

dotnet new mvc komutu, aşağıdaki kök düzeyi <Project öğesini içeren bir proje> dosyası oluşturur:

<Project Sdk="Microsoft.NET.Sdk.Web">
    <!-- omitted for brevity -->
</Project>

Yukarıdaki <Project> öğenin özniteliği sırasıyla $(MSBuildSDKsPath)\Microsoft.NET.Sdk.Web\Sdk\Sdk.props ve $(MSBuildSDKsPath)\Microsoft.NET.Sdk.Web\Sdk\Sdk.targets konumundan MSBuild özelliklerini ve hedeflerini içeri aktarır.Sdk varsayılan konumu $(MSBuildSDKsPath) (Visual Studio 2019 Enterprise ile) %programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Sdks klasörüdür.

Microsoft.NET.Sdk.Web(Web SDK'sı), (.NET Core SDK) ve Microsoft.NET.Sdk.Razor (Razor SDK) dahil olmak üzere Microsoft.NET.Sdk diğer SDK'lara bağlıdır. Her bağımlı SDK ile ilişkili MSBuild özellikleri ve hedefleri içeri aktarılır. Yayımlama hedefleri, kullanılan yayımlama yöntemine göre uygun hedef kümesini içeri aktarır.

MSBuild veya Visual Studio bir projeyi yüklediğinde aşağıdaki üst düzey eylemler gerçekleşir:

  • Proje oluşturma
  • Yayımlamak için işlem dosyaları
  • Dosyaları hedefe yayımlama

Proje öğelerini hesaplama

Proje yüklendiğinde, MSBuild proje öğeleri (dosyalar) hesaplanır. Öğe türü, dosyanın nasıl işleneceğini belirler. Varsayılan olarak, .cs dosyalar öğe listesine eklenir Compile . Compile Öğe listesindeki dosyalar derlenir.

Öğe Content listesi, derleme çıkışlarına ek olarak yayımlanan dosyaları içerir. Varsayılan olarak, , ve desenleri wwwroot\**ile eşleşen dosyalar öğe listesine eklenirContent.**\*.json **\*.config Örneğin, wwwroot\** globbing deseni wwwroot klasöründeki ve alt klasörlerindeki tüm dosyaları eşleştirir.

Web SDK'sı SDK'yi Razor içeri aktarır. Sonuç olarak, desenleri **\*.cshtml eşleştiren dosyalar ve **\*.razor öğe listesine de eklenir Content .

Web SDK'sı SDK'yi Razor içeri aktarır. Sonuç olarak, desenle **\*.cshtml eşleşen dosyalar da öğe listesine eklenir Content .

Yayımlama listesine açıkça bir dosya eklemek için, Dosyayı Dahil Et bölümünde gösterildiği gibi dosyayı doğrudan .csproj dosyaya ekleyin.

Visual Studio'da Yayımla düğmesini seçerken veya komut satırından yayımlarken:

  • Özellikler/öğeler hesaplanır (derlemek için gereken dosyalar).
  • Yalnızca Visual Studio: NuGet paketleri geri yüklenir. (Geri yükleme, CLI'da kullanıcı tarafından açık olmalıdır.)
  • Proje derlemektedir.
  • Yayımlama öğeleri hesaplanır (yayımlamak için gereken dosyalar).
  • Proje yayımlanır (hesaplanan dosyalar yayımlama hedefine kopyalanır).

ASP.NET Core projesi proje dosyasına başvurduğunda Microsoft.NET.Sdk.Web , web uygulaması dizininin köküne bir app_offline.htm dosya yerleştirilir. Dosya mevcut olduğunda ASP.NET Core Modülü uygulamayı düzgün bir şekilde kapatır ve dağıtım sırasında app_offline.htm dosyasını kullanıma sunar. Daha fazla bilgi için bkz. ASP.NET Core Modülü yapılandırma başvurusu.

Temel komut satırı yayımlama

Komut satırı yayımlama tüm .NET Core destekli platformlarda çalışır ve Visual Studio gerektirmez. Aşağıdaki örneklerde. .NET CLI'nın dotnet publish komutu proje dizininden (dosyayı içeren .csproj ) çalıştırılır. Proje klasörü geçerli çalışma dizini değilse, proje dosya yolunu açıkça geçirin. Örneğin:

dotnet publish C:\Webs\Web1

Web uygulaması oluşturmak ve yayımlamak için aşağıdaki komutları çalıştırın:

dotnet new mvc
dotnet publish

dotnet publish komutu aşağıdaki çıkışın bir çeşitlemini oluşturur:

C:\Webs\Web1>dotnet publish
Microsoft (R) Build Engine version {VERSION} for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 36.81 ms for C:\Webs\Web1\Web1.csproj.
  Web1 -> C:\Webs\Web1\bin\Debug\{TARGET FRAMEWORK MONIKER}\Web1.dll
  Web1 -> C:\Webs\Web1\bin\Debug\{TARGET FRAMEWORK MONIKER}\Web1.Views.dll
  Web1 -> C:\Webs\Web1\bin\Debug\{TARGET FRAMEWORK MONIKER}\publish\

Varsayılan yayımlama klasörü biçimi bin\Debug\{TARGET FRAMEWORK MONIKER}\publish\ şeklindedir. Örneğin, bin\Debug\netcoreapp2.2\publish\.

Aşağıdaki komut bir Release derlemeyi ve yayımlama dizinini belirtir:

dotnet publish -c Release -o C:\MyWebs\test

dotnet publish komutu, hedefi çağıran MSBuild'i Publish çağırır. geçirilen dotnet publish tüm parametreler MSBuild'e geçirilir. -c ve -o parametreleri sırasıyla MSBuild'in Configuration ve OutputPath özellikleriyle eşler.

MSBuild özellikleri aşağıdaki biçimlerden biri kullanılarak geçirilebilir:

  • -p:<NAME>=<VALUE>
  • /p:<NAME>=<VALUE>

Örneğin, aşağıdaki komut bir Release derlemeyi bir ağ paylaşımında yayımlar. Ağ paylaşımı eğik çizgilerle (r8/) belirtilir ve .NET Core tarafından desteklenen tüm platformlarda çalışır.

dotnet publish -c Release /p:PublishDir=//r8/release/AdminWeb

Dağıtım için yayımlanan uygulamanın çalışmadığını onaylayın. Uygulama çalışırken yayımlama klasöründeki dosyalar kilitlenir. Kilitli dosyalar kopyalanamadığından dağıtım gerçekleştirilemiyor.

Yayımlama profilleri

Bu bölümde yayımlama profili oluşturmak için Visual Studio 2019 veya üzeri kullanılır. Profil oluşturulduktan sonra Visual Studio'dan veya komut satırından yayımlama kullanılabilir. Yayımlama profilleri yayımlama işlemini basitleştirebilir ve istediğiniz sayıda profil bulunabilir.

Aşağıdaki yollardan birini seçerek Visual Studio'da yayımlama profili oluşturun:

  • Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla öğesini seçin.
  • Oluştur menüsünden Yayımla {PROJECT NAME} öğesini seçin.

Uygulama özellikleri sayfasının Yayımla sekmesi görüntülenir. Projede yayımlama profili yoksa Yayımlama hedefi seçin sayfası görüntülenir. Aşağıdaki yayımlama hedeflerinden birini seçmeniz istenir:

  • Azure App Service
  • Linux'ta Azure Uygulaması Hizmeti
  • Azure Sanal Makineler
  • Klasör
  • IIS, FTP, Web Dağıtımı (herhangi bir web sunucusu için)
  • Profili İçeri Aktar

En uygun yayımlama hedefini belirlemek için bkz . Benim için doğru yayımlama seçenekleri.

Klasör yayımlama hedefi seçildiğinde, yayımlanan varlıkları depolamak için bir klasör yolu belirtin. Varsayılan klasör yolu : bin\{PROJECT CONFIGURATION}\{TARGET FRAMEWORK MONIKER}\publish\. Örneğin, bin\Release\netcoreapp2.2\publish\. Bitirmek için Profil Oluştur düğmesini seçin.

Yayımlama profili oluşturulduktan sonra Yayımla sekmesinin içeriği değişir. Yeni oluşturulan profil bir açılan listede görünür. Açılan listenin altında Yeni profil oluştur'u seçerek başka bir yeni profil oluşturun.

Visual Studio'nun yayımlama aracı, yayımlama profilini açıklayan bir Properties/PublishProfiles/{PROFILE NAME}.pubxml MSBuild dosyası oluşturur. .pubxml dosyası:

  • Yayımlama yapılandırma ayarlarını içerir ve yayımlama işlemi tarafından kullanılır.
  • Derleme ve yayımlama işlemini özelleştirmek için değiştirilebilir.

Bir Azure hedefinde yayımlarken .pubxml dosyası Azure abonelik tanımlayıcınızı içerir. Bu hedef türüyle, bu dosyayı kaynak denetimine eklemek önerilmez. Azure olmayan bir hedefe yayımlarken .pubxml dosyasını iade etmek güvenlidir.

Hassas bilgiler (yayımlama parolası gibi) kullanıcı/makine düzeyinde şifrelenir. Özellikler/PublishProfiles/{PROFILE NAME}.pubxml.user dosyasında depolanır. Bu dosya hassas bilgileri depolayabildiğinden kaynak denetiminde denetlenmemelidir.

ASP.NET Core web uygulamasını yayımlamaya genel bakış için bkz . ASP.NET Core'u barındırma ve dağıtma. ASP.NET Core web uygulamasını yayımlamak için gereken MSBuild görevleri ve hedefleri dotnet/websdk deposunda açık kaynaktır.

Aşağıdaki komutlar klasör, MSDeploy ve Kudu yayımlama profillerini kullanabilir. MSDeploy'da platformlar arası destek olmadığından, aşağıdaki MSDeploy seçenekleri yalnızca Windows'ta desteklenir.

Klasör (platformlar arası çalışır):

dotnet publish WebApplication.csproj /p:PublishProfile=<FolderProfileName>
dotnet build WebApplication.csproj /p:DeployOnBuild=true /p:PublishProfile=<FolderProfileName>

MSDeploy:

dotnet publish WebApplication.csproj /p:PublishProfile=<MsDeployProfileName> /p:Password=<DeploymentPassword>
dotnet build WebApplication.csproj /p:DeployOnBuild=true /p:PublishProfile=<MsDeployProfileName> /p:Password=<DeploymentPassword>

MSDeploy paketi:

dotnet publish WebApplication.csproj /p:PublishProfile=<MsDeployPackageProfileName>
dotnet build WebApplication.csproj /p:DeployOnBuild=true /p:PublishProfile=<MsDeployPackageProfileName>

Yukarıdaki örneklerde:

  • dotnet publish ve dotnet build herhangi bir platformdan Azure'da yayımlamak için Kudu API'lerini destekleyin. Visual Studio yayımlama, Kudu API'lerini destekler, ancak Azure'da platformlar arası yayımlama için WebSDK tarafından desteklenir.
  • Komutuna dotnet publish geçmeyinDeployOnBuild.

Daha fazla bilgi için bkz . Microsoft.NET.Sdk.Publish.

Projenin Özellikler/PublishProfiles klasörüne aşağıdaki içeriğe sahip bir yayımlama profili ekleyin:

<Project>
  <PropertyGroup>
    <PublishProtocol>Kudu</PublishProtocol>
    <PublishSiteName>nodewebapp</PublishSiteName>
    <UserName>username</UserName>
    <Password>password</Password>
  </PropertyGroup>
</Project>

Klasör yayımlama örneği

FolderProfile adlı bir profille yayımlarken aşağıdaki komutlardan birini kullanın:

dotnet publish /p:Configuration=Release /p:PublishProfile=FolderProfile
dotnet build /p:DeployOnBuild=true /p:PublishProfile=FolderProfile
msbuild /p:DeployOnBuild=true /p:PublishProfile=FolderProfile

.NET CLI'nın dotnet build komutu derleme ve yayımlama işlemini çalıştırmak için çağrı yapar msbuild . dotnet build ve msbuild komutları, bir klasör profili geçirilirken eşdeğerdir. Doğrudan Windows'da çağrı msbuild yapılırken, MSBuild'in .NET Framework sürümü kullanılır. Klasör olmayan bir profilde çağrı dotnet build :

  • msbuildMSDeploy kullanan öğesini çağırır.
  • Hataya neden olur (Windows üzerinde çalışırken bile). Klasör dışı bir profille yayımlamak için doğrudan arayın msbuild .

Aşağıdaki klasör yayımlama profili Visual Studio ile oluşturulmuştur ve bir ağ paylaşımında yayımlar:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project.
You can customize the behavior of this process by editing this 
MSBuild file.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <PublishProvider>FileSystem</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <PublishFramework>netcoreapp1.1</PublishFramework>
    <ProjectGuid>c30c453c-312e-40c4-aec9-394a145dee0b</ProjectGuid>
    <publishUrl>\\r8\Release\AdminWeb</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>
</Project>

Yukarıdaki örnekte:

  • <ExcludeApp_Data> özelliği yalnızca xml şeması gereksinimini karşılamak için mevcuttur. <ExcludeApp_Data> Özelliğin, proje kökünde bir App_Data klasörü olsa bile yayımlama işlemi üzerinde hiçbir etkisi yoktur. App_Data klasörü, ASP.NET 4.x projelerinde olduğu gibi özel işlem almaz.
  • <LastUsedBuildConfiguration> özelliği Release olarak ayarlanmıştır. Visual Studio'dan yayımlarken, <LastUsedBuildConfiguration> yayımlama işlemi başlatıldığında değeri kullanılarak ayarlanır. <LastUsedBuildConfiguration> özeldir ve içeri aktarılan bir MSBuild dosyasında geçersiz kılınmamalıdır. Ancak bu özellik, aşağıdaki yaklaşımlardan biri kullanılarak komut satırından geçersiz kılınabilir.
    • .NET CLI'yi kullanma:

      dotnet publish /p:Configuration=Release /p:PublishProfile=FolderProfile
      
      dotnet build -c Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile
      
    • MSBuild Kullanma:

      msbuild /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile
      

Komut satırından MSDeploy uç noktasına yayımlama

Aşağıdaki örnekte, Visual Studio tarafından oluşturulan AzureWebApp adlı bir ASP.NET Core web uygulaması gerçekleştirilir. Visual Studio ile bir Azure Uygulaması yayımlama profili eklenir. Profil oluşturma hakkında daha fazla bilgi için Profilleri yayımlama bölümüne bakın.

Uygulamayı yayımlama profili kullanarak dağıtmak için Visual Studio Geliştirici Komut İstemi'nden komutunu yürütebilirsiniz.msbuild Komut istemi, Windows görev çubuğundaki Başlat menüsünün Visual Studio klasöründe bulunur. Daha kolay erişim için komut istemini Visual Studio'daki Araçlar menüsüne ekleyebilirsiniz. Daha fazla bilgi için bkz . Visual Studio için Geliştirici Komut İstemi.

MSBuild aşağıdaki komut söz dizimini kullanır:

msbuild {PATH} 
    /p:DeployOnBuild=true 
    /p:PublishProfile={PROFILE} 
    /p:Username={USERNAME} 
    /p:Password={PASSWORD}
  • {PATH}: Uygulamanın proje dosyasının yolu.
  • {PROFILE}: Yayımlama profilinin adı.
  • {USERNAME}: MSDeploy kullanıcı adı. yayımlama {USERNAME} profilinde bulunabilir.
  • {PASSWORD}: MSDeploy parolası. {PASSWORD}{PROFILE} öğesinden alın. PublishSettings dosyası. dosyasını indirin. Aşağıdakilerden birinden PublishSettings dosyası:
    • Çözüm Gezgini: Bulut Gezginini Görüntüle'yi>seçin. Azure aboneliğinizle bağlantı kurun. App Services'i açın. Uygulamaya sağ tıklayın. Yayımlama Profilini İndir'i seçin.
    • Azure portalı: Web uygulamasının Genel Bakış panelinde Yayımlama profilini al'ı seçin.

Aşağıdaki örnekte AzureWebApp - Web Dağıtımı adlı bir yayımlama profili kullanılır:

msbuild "AzureWebApp.csproj" 
    /p:DeployOnBuild=true 
    /p:PublishProfile="AzureWebApp - Web Deploy" 
    /p:Username="$AzureWebApp" 
    /p:Password=".........."

Yayımlama profili bir Windows komut kabuğundan .NET CLI'nın dotnet msbuild komutuyla da kullanılabilir:

dotnet msbuild "AzureWebApp.csproj"
    /p:DeployOnBuild=true 
    /p:PublishProfile="AzureWebApp - Web Deploy" 
    /p:Username="$AzureWebApp" 
    /p:Password=".........."

Önemli

Komut dotnet msbuild , platformlar arası bir komut olup macOS ve Linux üzerinde ASP.NET Core uygulamalarını derleyebilir. Ancak macOS ve Linux üzerinde MSBuild, Azure'a veya diğer MSDeploy uç noktalarına uygulama dağıtamaz.

Ortamı ayarlama

Uygulamanın ortamını ayarlamak için yayımlama profiline (.pubxml) veya proje dosyasına özelliğini ekleyin:<EnvironmentName>

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

Web.config dönüştürmeleri gerekiyorsa (örneğin, yapılandırmaya, profile veya ortama göre ortam değişkenlerini ayarlama), bkz. Web.config'i dönüştürme.

Dosyaları dışlama

ASP.NET Core web uygulamalarını yayımlarken aşağıdaki varlıklar dahil edilir:

  • Yapıtlar oluşturma
  • Aşağıdaki globbing desenleri ile eşleşen klasörler ve dosyalar:
    • **\*.config (örneğin, web.config)
    • **\*.json (örnek, appsettings.json)
    • wwwroot\**

MSBuild, globbing desenlerini destekler. Örneğin, aşağıdaki <Content> öğe wwwroot\content klasöründeki ve alt klasörlerindeki metin (.txt) dosyalarının kopyalanmasını gizler:

<ItemGroup>
  <Content Update="wwwroot/content/**/*.txt" CopyToPublishDirectory="Never" />
</ItemGroup>

Önceki işaretleme bir yayımlama profiline veya dosyaya .csproj eklenebilir. Dosyaya .csproj eklendiğinde, kural projedeki tüm yayımlama profillerine eklenir.

Aşağıdaki <MsDeploySkipRules> öğe wwwroot\content klasöründeki tüm dosyaları dışlar:

<ItemGroup>
  <MsDeploySkipRules Include="CustomSkipFolder">
    <ObjectName>dirPath</ObjectName>
    <AbsolutePath>wwwroot\\content</AbsolutePath>
  </MsDeploySkipRules>
</ItemGroup>

<MsDeploySkipRules>dağıtım sitesinden atlama hedeflerini silmez. <Content> hedeflenen dosya ve klasörler dağıtım sitesinden silinir. Örneğin, dağıtılan bir web uygulamasının aşağıdaki dosyalara sahip olduğunu varsayalım:

  • Views/Home/About1.cshtml
  • Views/Home/About2.cshtml
  • Views/Home/About3.cshtml

Aşağıdaki <MsDeploySkipRules> öğeler eklenirse, bu dosyalar dağıtım sitesinde silinmez.

<ItemGroup>
  <MsDeploySkipRules Include="CustomSkipFile">
    <ObjectName>filePath</ObjectName>
    <AbsolutePath>Views\\Home\\About1.cshtml</AbsolutePath>
  </MsDeploySkipRules>

  <MsDeploySkipRules Include="CustomSkipFile">
    <ObjectName>filePath</ObjectName>
    <AbsolutePath>Views\\Home\\About2.cshtml</AbsolutePath>
  </MsDeploySkipRules>

  <MsDeploySkipRules Include="CustomSkipFile">
    <ObjectName>filePath</ObjectName>
    <AbsolutePath>Views\\Home\\About3.cshtml</AbsolutePath>
  </MsDeploySkipRules>
</ItemGroup>

Yukarıdaki <MsDeploySkipRules> öğeler, atlanan dosyaların dağıtılmasını engeller. Bu dosyalar dağıtıldıktan sonra silinmez.

Aşağıdaki <Content> öğe dağıtım sitesinde hedeflenen dosyaları siler:

<ItemGroup>
  <Content Update="Views/Home/About?.cshtml" CopyToPublishDirectory="Never" />
</ItemGroup>

Yukarıdaki <Content> öğeyle komut satırı dağıtımının kullanılması aşağıdaki çıkışın bir çeşitlemini verir:

MSDeployPublish:
  Starting Web deployment task from source: manifest(C:\Webs\Web1\obj\Release\{TARGET FRAMEWORK MONIKER}\PubTmp\Web1.SourceManifest.
  xml) to Destination: auto().
  Deleting file (Web11112\Views\Home\About1.cshtml).
  Deleting file (Web11112\Views\Home\About2.cshtml).
  Deleting file (Web11112\Views\Home\About3.cshtml).
  Updating file (Web11112\web.config).
  Updating file (Web11112\Web1.deps.json).
  Updating file (Web11112\Web1.dll).
  Updating file (Web11112\Web1.pdb).
  Updating file (Web11112\Web1.runtimeconfig.json).
  Successfully executed Web deployment task.
  Publish Succeeded.
Done Building Project "C:\Webs\Web1\Web1.csproj" (default targets).

Dosyaları dahil et

Aşağıdaki bölümlerde, yayımlama zamanında dosya eklemeye yönelik farklı yaklaşımlar özetlenmiştir. Genel dosya ekleme bölümü, Web SDK'sında DotNetPublishFiles bir yayımlama hedefleri dosyası tarafından sağlanan öğesini kullanır. Seçmeli dosya ekleme bölümü, .NET Core SDK'sında bir yayımlama hedefleri dosyası tarafından sağlanan öğesini kullanırResolvedFileToPublish. Web SDK'sı .NET Core SDK'sine bağlı olduğundan, bir ASP.NET Core projesinde her iki öğe de kullanılabilir.

Genel dosya ekleme

Aşağıdaki örneğin <ItemGroup> öğesi, proje dizininin dışında bulunan bir klasörü yayımlanan sitenin bir klasörüne kopyalamayı gösterir. Aşağıdaki işaretlemelere <ItemGroup> eklenen tüm dosyalar varsayılan olarak eklenir.

<ItemGroup>
  <_CustomFiles Include="$(MSBuildProjectDirectory)/../images/**/*" />
  <DotNetPublishFiles Include="@(_CustomFiles)">
    <DestinationRelativePath>wwwroot/images/%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
  </DotNetPublishFiles>
</ItemGroup>

Yukarıdaki işaretleme:

  • Dosyaya .csproj veya yayımlama profiline eklenebilir. Dosyaya .csproj eklenirse, projedeki her yayımlama profiline eklenir.
  • Özniteliğin globbing deseni Include ile eşleşen dosyaları depolamak için bir _CustomFiles öğe bildirir. Desende başvuruda bulunılan images klasörü proje dizininin dışında bulunur. adlı $(MSBuildProjectDirectory)ayrılmış bir özellik, proje dosyasının mutlak yoluna çözümler.
  • Öğeye DotNetPublishFiles dosyaların listesini sağlar. Varsayılan olarak, öğenin <DestinationRelativePath> öğesi boş olur. Varsayılan değer işaretlemede geçersiz kılınmış ve gibi %(RecursiveDir)iyi bilinen öğe meta verilerini kullanır. İç metin, yayımlanan sitenin wwwroot/images klasörünü temsil eder.

Seçmeli dosya ekleme

Aşağıdaki örnekte vurgulanan işaretleme şunu gösterir:

  • Projenin dışında bulunan bir dosyayı yayımlanan sitenin wwwroot klasörüne kopyalama. ReadMe2.md dosya adı korunur.
  • wwwroot\Content klasörü hariç.
  • Views\Home\About2.cshtml hariç.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <PublishProvider>FileSystem</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <PublishFramework />
    <ProjectGuid>afa9f185-7ce0-4935-9da1-ab676229d68a</ProjectGuid>
    <publishUrl>bin\Release\PublishOutput</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>
  <ItemGroup>
    <ResolvedFileToPublish Include="..\ReadMe2.md">
      <RelativePath>wwwroot\ReadMe2.md</RelativePath>
    </ResolvedFileToPublish>

    <Content Update="wwwroot\Content\**\*" CopyToPublishDirectory="Never" />
    <Content Update="Views\Home\About2.cshtml" CopyToPublishDirectory="Never" />
  </ItemGroup>
</Project>

Yukarıdaki örnek, özniteliğinde ResolvedFileToPublish Include sağlanan dosyaları her zaman yayımlanan siteye kopyalamak için varsayılan davranışı olan öğesini kullanır. veya PreserveNewestiç metnine Never sahip bir <CopyToPublishDirectory> alt öğe ekleyerek varsayılan davranışı geçersiz kılın. Örneğin:

<ResolvedFileToPublish Include="..\ReadMe2.md">
  <RelativePath>wwwroot\ReadMe2.md</RelativePath>
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ResolvedFileToPublish>

Daha fazla dağıtım örneği için bkz . Web SDK BENIOKU dosyası.

Yayımlamadan önce veya sonra hedef çalıştırma

Yerleşik BeforePublish ve AfterPublish hedefler, yayımlama hedefi öncesinde veya sonrasında bir hedef yürütür. Konsol iletilerini yayımlamadan önce ve sonra günlüğe kaydetmek için yayımlama profiline aşağıdaki öğeleri ekleyin:

<Target Name="CustomActionsBeforePublish" BeforeTargets="BeforePublish">
    <Message Text="Inside BeforePublish" Importance="high" />
  </Target>
  <Target Name="CustomActionsAfterPublish" AfterTargets="AfterPublish">
    <Message Text="Inside AfterPublish" Importance="high" />
</Target>

Güvenilmeyen sertifika kullanarak bir sunucuda yayımlama

değerini içeren <AllowUntrustedCertificate> True özelliğini yayımlama profiline ekleyin:

<PropertyGroup>
  <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
</PropertyGroup>

Kudu hizmeti

Azure Uygulaması Hizmeti web uygulaması dağıtımındaki dosyaları görüntülemek için Kudu hizmetini kullanın. Belirteci scm web uygulaması adına ekleyin. Örneğin:

URL Sonuç
http://mysite.azurewebsites.net/ Web Uygulaması
http://mysite.scm.azurewebsites.net/ Kudu hizmeti

Dosyaları görüntülemek, düzenlemek, silmek veya eklemek için Hata Ayıklama Konsolu menü öğesini seçin.

Ek kaynaklar