Profil penerbitan Visual Studio (.pubxml) untuk penyebaran aplikasi ASP.NET Core

Oleh Sayed Ibrahim Hashimi dan Rick Anderson

Dokumen ini berfokus pada penggunaan Visual Studio 2019 atau yang lebih baru untuk membuat dan menggunakan profil penerbitan. Profil penerbitan yang dibuat dengan Visual Studio dapat digunakan dengan MSBuild dan Visual Studio. Untuk instruksi tentang menerbitkan ke Azure, lihat Menerbitkan aplikasi ASP.NET Core ke Azure dengan Visual Studio.

dotnet new mvc Perintah menghasilkan file proyek yang berisi elemen Proyek> tingkat <akar berikut:

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

Atribut elemen sebelumnya <Project> mengimpor properti dan target MSBuild dari $(MSBuildSDKsPath)\Microsoft.NET.Sdk.Web\Sdk\Sdk.props dan $(MSBuildSDKsPath)\Microsoft.NET.Sdk.Web\Sdk\Sdk.targets, masing-masing.Sdk Lokasi default untuk $(MSBuildSDKsPath) (dengan Visual Studio 2019 Enterprise) adalah folder %programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Sdks .

Microsoft.NET.Sdk.Web (Web SDK) tergantung pada SDK lain, termasuk Microsoft.NET.Sdk (.NET Core SDK) dan Microsoft.NET.Sdk.Razor (Razor SDK). Properti dan target MSBuild yang terkait dengan setiap SDK dependen diimpor. Terbitkan target mengimpor sekumpulan target yang sesuai berdasarkan metode penerbitan yang digunakan.

Saat MSBuild atau Visual Studio memuat proyek, tindakan tingkat tinggi berikut terjadi:

  • Membuat proyek
  • Komputasi file untuk dipublikasikan
  • Menerbitkan file ke tujuan

Item proyek komputasi

Saat proyek dimuat, item proyek MSBuild (file) dihitung. Jenis item menentukan bagaimana file diproses. Secara default, .cs file disertakan Compile dalam daftar item. File dalam daftar item dikompilasi Compile .

Daftar Content item berisi file yang diterbitkan selain output build. Secara default, file yang cocok dengan pola wwwroot\**, , **\*.configdan **\*.json disertakan dalam Content daftar item. Misalnya, wwwroot\**pola globbing cocok dengan semua file di folder wwwroot dan subfoldernya.

Web SDK mengimpor Razor SDK. Akibatnya, file yang cocok dengan pola **\*.cshtml dan **\*.razor juga disertakan dalam Content daftar item.

Web SDK mengimpor Razor SDK. Akibatnya, file yang cocok dengan **\*.cshtml pola juga disertakan dalam Content daftar item.

Untuk menambahkan file secara eksplisit ke daftar penerbitan, tambahkan file langsung dalam file seperti yang ditunjukkan .csproj di bagian Sertakan File .

Saat memilih tombol Terbitkan di Visual Studio atau saat menerbitkan dari baris perintah:

  • Properti/item dihitung (file yang diperlukan untuk membangun).
  • Hanya Visual Studio: Paket NuGet dipulihkan. (Pemulihan harus eksplisit oleh pengguna di CLI.)
  • Proyek dibangun.
  • Item penerbitan dihitung (file yang diperlukan untuk diterbitkan).
  • Proyek diterbitkan (file komputasi disalin ke tujuan penerbitan).

Saat proyek ASP.NET Core mereferensikan Microsoft.NET.Sdk.Web dalam file proyek, app_offline.htm file ditempatkan di akar direktori aplikasi web. Jika file ada, ASP.NET Core Module akan dengan lancar mematikan aplikasi dan menyajikan file app_offline.htm selama penyebaran. Untuk informasi lebih lanjut, lihat Referensi konfigurasi ASP.NET Core Module.

Penerbitan baris perintah dasar

Penerbitan baris perintah berfungsi di semua platform yang didukung .NET Core dan tidak memerlukan Visual Studio. Dalam contoh berikut, perintah publikasi dotnet .NET Core CLI dijalankan dari direktori proyek (yang berisi .csproj file). Jika folder proyek bukan direktori kerja saat ini, secara eksplisit meneruskan jalur file proyek. Contohnya:

dotnet publish C:\Webs\Web1

Jalankan perintah berikut untuk membuat dan menerbitkan aplikasi web:

dotnet new mvc
dotnet publish

Perintah dotnet publish menghasilkan variasi output berikut:

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\

Format folder penerbitan default adalah bin\Debug\{TARGET FRAMEWORK MONIKER}\publish\. Misalnya, bin\Debug\netcoreapp2.2\publish\.

Perintah berikut menentukan Release build dan direktori penerbitan:

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

Perintah dotnet publish memanggil MSBuild, yang memanggil Publish target. Parameter apa pun yang diteruskan ke dotnet publish diteruskan ke MSBuild. Parameter -c dan -o masing-masing memetakan ke properti dan OutputPath MSBuildConfiguration.

Properti MSBuild dapat diteruskan menggunakan salah satu format berikut:

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

Misalnya, perintah berikut menerbitkan build Release ke berbagi jaringan. Berbagi jaringan ditentukan dengan garis miring (//r8/) dan berfungsi pada semua platform yang didukung .NET Core.

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

Konfirmasikan bahwa aplikasi yang diterbitkan untuk penyebaran tidak berjalan. File di folder terbitkan dikunci saat aplikasi berjalan. Penyebaran tidak dapat terjadi karena file terkunci tidak dapat disalin.

Terbitkan profil

Bagian ini menggunakan Visual Studio 2019 atau yang lebih baru untuk membuat profil penerbitan. Setelah profil dibuat, penerbitan dari Visual Studio atau baris perintah tersedia. Profil publikasi dapat menyederhanakan proses penerbitan, dan sejumlah profil dapat ada.

Buat profil publikasi di Visual Studio dengan memilih salah satu jalur berikut:

  • Klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan.
  • Pilih Terbitkan {PROJECT NAME} dari menu Build .

Tab Terbitkan dari halaman kemampuan aplikasi ditampilkan. Jika proyek tidak memiliki profil penerbitan, halaman Pilih target penerbitan ditampilkan. Anda diminta untuk memilih salah satu target penerbitan berikut:

  • Azure App Service
  • Azure App Service di Linux
  • Azure Virtual Machines
  • Folder
  • IIS, FTP, Web Deploy (untuk server web apa pun)
  • Impor Profil

Untuk menentukan target penerbitan yang paling tepat, lihat Opsi penerbitan apa yang tepat untuk saya.

Saat target Penerbitan folder dipilih, tentukan jalur folder untuk menyimpan aset yang diterbitkan. Jalur folder default adalah bin\{PROJECT CONFIGURATION}\{TARGET FRAMEWORK MONIKER}\publish\. Misalnya, bin\Release\netcoreapp2.2\publish\. Pilih tombol Buat Profil untuk menyelesaikannya.

Setelah profil publikasi dibuat, konten tab Terbitkan berubah. Profil yang baru dibuat muncul di daftar drop-down. Di bawah daftar drop-down, pilih Buat profil baru untuk membuat profil baru lainnya.

Alat penerbitan Visual Studio menghasilkan file Properties/PublishProfiles/{PROFILE NAME}.pubxml MSBuild yang menjelaskan profil penerbitan. File .pubxml :

  • Berisi pengaturan konfigurasi publikasi dan digunakan oleh proses penerbitan.
  • Dapat dimodifikasi untuk menyesuaikan proses build dan penerbitan.

Saat menerbitkan ke target Azure, file .pubxml berisi pengidentifikasi langganan Azure Anda. Dengan jenis target tersebut, menambahkan file ini ke kontrol sumber tidak disarankan. Saat menerbitkan ke target non-Azure, aman untuk memeriksa file .pubxml .

Informasi sensitif (seperti kata sandi penerbitan) dienkripsi pada tingkat per pengguna/komputer. Ini disimpan dalam file Properties/PublishProfiles/{PROFILE NAME}.pubxml.user . Karena file ini dapat menyimpan informasi sensitif, file tidak boleh diperiksa ke kontrol sumber.

Untuk gambaran umum tentang cara menerbitkan aplikasi web ASP.NET Core, lihat Menghosting dan menyebarkan ASP.NET Core. Tugas dan target MSBuild yang diperlukan untuk menerbitkan aplikasi web ASP.NET Core bersumber terbuka di repositori dotnet/websdk.

Perintah berikut dapat menggunakan profil publikasi folder, MSDeploy, dan Kudu . Karena MSDeploy tidak memiliki dukungan lintas platform, opsi MSDeploy berikut hanya didukung di Windows.

Folder (berfungsi lintas platform):

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>

Paket MSDeploy:

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

Di dalam contoh sebelumnya:

  • dotnet publish dan dotnet build mendukung API Kudu untuk diterbitkan ke Azure dari platform apa pun. Penerbitan Visual Studio mendukung API Kudu, tetapi didukung oleh WebSDK untuk penerbitan lintas platform ke Azure.
  • Jangan meneruskan DeployOnBuild ke dotnet publish perintah .

Untuk informasi selengkapnya, lihat Microsoft.NET.Sdk.Publish.

Tambahkan profil publikasi ke folder Properti/PublishProfiles proyek dengan konten berikut:

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

Contoh penerbitan folder

Saat menerbitkan dengan profil bernama FolderProfile, gunakan salah satu perintah berikut:

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

Perintah build dotnet .NET Core CLI memanggil msbuild untuk menjalankan proses build dan penerbitan. dotnet build Perintah dan msbuild setara saat meneruskan profil folder. Saat memanggil msbuild langsung di Windows, MSBuild versi .NET Framework digunakan. Memanggil dotnet build di profil non-folder:

  • msbuildMemanggil , yang menggunakan MSDeploy.
  • Mengalihkan kegagalan (bahkan ketika berjalan di Windows). Untuk menerbitkan dengan profil non-folder, hubungi msbuild langsung.

Profil penerbitan folder berikut dibuat dengan Visual Studio dan diterbitkan ke berbagi jaringan:

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

Dalam contoh sebelumnya:

  • Properti <ExcludeApp_Data> ini hadir hanya untuk memenuhi persyaratan skema XML. Properti <ExcludeApp_Data> tidak berpengaruh pada proses penerbitan, bahkan jika ada folder App_Data di akar proyek. Folder App_Data tidak menerima perlakuan khusus seperti dalam proyek ASP.NET 4.x.
  • Properti <LastUsedBuildConfiguration> diatur ke Release. Saat menerbitkan dari Visual Studio, nilai <LastUsedBuildConfiguration> diatur menggunakan nilai saat proses penerbitan dimulai. <LastUsedBuildConfiguration> bersifat khusus dan tidak boleh ditimpa dalam file MSBuild yang diimpor. Namun, properti ini dapat diambil alih dari baris perintah menggunakan salah satu pendekatan berikut.
    • Menggunakan .NET Core CLI:

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

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

Menerbitkan ke titik akhir MSDeploy dari baris perintah

Contoh berikut menggunakan aplikasi web ASP.NET Core yang dibuat oleh Visual Studio bernama AzureWebApp. Profil penerbitan Azure Apps ditambahkan dengan Visual Studio. Untuk informasi selengkapnya tentang cara membuat profil, lihat bagian Terbitkan profil .

Untuk menyebarkan aplikasi menggunakan profil publikasi, jalankan msbuild perintah dari Prompt Perintah Pengembang Visual Studio. Perintah tersedia di folder Visual Studio dari menu Mulai pada taskbar Windows. Untuk akses yang lebih mudah, Anda dapat menambahkan prompt perintah ke menu Alat di Visual Studio. Untuk informasi selengkapnya, lihat Perintah Pengembang untuk Visual Studio.

MSBuild menggunakan sintaks perintah berikut:

msbuild {PATH} 
    /p:DeployOnBuild=true 
    /p:PublishProfile={PROFILE} 
    /p:Username={USERNAME} 
    /p:Password={PASSWORD}
  • {PATH}: Jalur ke file proyek aplikasi.
  • {PROFILE}: Nama profil publikasi.
  • {USERNAME}: Nama pengguna MSDeploy. {USERNAME} dapat ditemukan di profil penerbitan.
  • {PASSWORD}: Kata sandi MSDeploy. {PASSWORD} Dapatkan dari {PROFILE}. Terbitkan Pengaturan file. Unduh . Terbitkan Pengaturan file dari:
    • Penjelajah Solusi: Pilih Lihat>Cloud Explorer. Koneksi dengan langganan Azure Anda. Buka App Services. Klik kanan aplikasi. Pilih Unduh Profil Terbitkan.
    • portal Azure: Pilih Dapatkan profil publikasi di panel Gambaran Umum aplikasi web.

Contoh berikut menggunakan profil penerbitan bernama AzureWebApp - Web Deploy:

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

Profil penerbitan juga dapat digunakan dengan perintah msbuild dotnet CLI .NET Core dari shell perintah Windows:

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

Penting

dotnet msbuild Perintah ini adalah perintah lintas platform dan dapat mengkompilasi aplikasi ASP.NET Core di macOS dan Linux. Namun, MSBuild di macOS dan Linux tidak mampu menyebarkan aplikasi ke Azure atau titik akhir MSDeploy lainnya.

Mengatur lingkungan

Sertakan <EnvironmentName> properti dalam profil penerbitan (.pubxml) atau file proyek untuk mengatur lingkungan aplikasi:

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

Jika Anda memerlukan transformasi web.config (misalnya, mengatur variabel lingkungan berdasarkan konfigurasi, profil, atau lingkungan), lihat Mengubah web.config.

Mengecualikan file

Saat menerbitkan aplikasi web ASP.NET Core, aset berikut disertakan:

  • Membangun artefak
  • Folder dan file yang cocok dengan pola globbing berikut:
    • **\*.config (misalnya, web.config)
    • **\*.json (misalnya, appsettings.json)
    • wwwroot\**

MSBuild mendukung pola globbing. Misalnya, elemen berikut <Content> menekan penyalinan file teks (.txt) di folder wwwroot\content dan subfoldernya:

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

Markup sebelumnya dapat ditambahkan ke profil penerbitan .csproj atau file. Saat ditambahkan ke .csproj file, aturan ditambahkan ke semua profil penerbitan dalam proyek.

Elemen berikut <MsDeploySkipRules> mengecualikan semua file dari folder wwwroot\content :

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

<MsDeploySkipRules> tidak akan menghapus target lewati dari situs penyebaran. <Content> file dan folder yang ditargetkan dihapus dari situs penyebaran. Misalnya, aplikasi web yang disebarkan memiliki file berikut:

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

Jika elemen berikut <MsDeploySkipRules> ditambahkan, file tersebut tidak akan dihapus di situs penyebaran.

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

Elemen sebelumnya <MsDeploySkipRules> mencegah file yang dilewati disebarkan. Ini tidak akan menghapus file-file tersebut setelah disebarkan.

Elemen berikut <Content> menghapus file yang ditargetkan di situs penyebaran:

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

Menggunakan penyebaran baris perintah dengan elemen sebelumnya <Content> menghasilkan variasi output berikut:

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

Sertakan file

Bagian berikut menguraikan berbagai pendekatan untuk penyertaan file pada waktu penerbitan. Bagian Penyertaan file umum menggunakan DotNetPublishFiles item , yang disediakan oleh file target penerbitan di Web SDK. Bagian Penyertaan file selektif menggunakan ResolvedFileToPublish item , yang disediakan oleh file target penerbitan di .NET Core SDK. Karena Web SDK bergantung pada .NET Core SDK, salah satu item dapat digunakan dalam proyek ASP.NET Core.

Penyertaan file umum

Elemen contoh <ItemGroup> berikut menunjukkan penyalinan folder yang terletak di luar direktori proyek ke folder situs yang diterbitkan. File apa pun yang ditambahkan ke markup <ItemGroup> berikut disertakan secara default.

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

Markup sebelumnya:

  • Dapat ditambahkan ke .csproj file atau profil penerbitan. Jika ditambahkan ke .csproj file, itu disertakan dalam setiap profil penerbitan dalam proyek.
  • Menyatakan _CustomFiles item untuk menyimpan file yang cocok dengan Include pola globbing atribut. Folder gambar yang direferensikan dalam pola terletak di luar direktori proyek. Properti yang dipesan, bernama $(MSBuildProjectDirectory), diselesaikan ke jalur absolut file proyek.
  • Menyediakan daftar file ke DotNetPublishFiles item. Secara default, elemen item <DestinationRelativePath> kosong. Nilai default ditimpa dalam markup dan menggunakan metadata item terkenal seperti %(RecursiveDir). Teks dalam mewakili folder wwwroot/images dari situs yang diterbitkan.

Penyertaan file selektif

Markup yang disorot dalam contoh berikut menunjukkan:

  • Menyalin file yang terletak di luar proyek ke folder wwwroot situs yang diterbitkan. Nama file ReadMe2.md dipertahankan.
  • Tidak termasuk folder wwwroot\Content .
  • Mengecualikan Views\Home\About2.cshtml.
<?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>

Contoh sebelumnya menggunakan ResolvedFileToPublish item, yang perilaku defaultnya adalah selalu menyalin file yang disediakan dalam Include atribut ke situs yang diterbitkan. Mengesampingkan perilaku default dengan menyertakan <CopyToPublishDirectory> elemen turunan dengan teks dalam baik Never atau PreserveNewest. Contohnya:

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

Untuk sampel penyebaran lainnya, lihat file WEB SDK README.

Menjalankan target sebelum atau sesudah penerbitan

Target dan AfterPublish bawaan BeforePublish menjalankan target sebelum atau sesudah target penerbitan. Tambahkan elemen berikut ke profil publikasi untuk mencatat pesan konsol baik sebelum dan sesudah penerbitan:

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

Menerbitkan ke server menggunakan sertifikat yang tidak tepercaya

<AllowUntrustedCertificate> Tambahkan properti dengan nilai ke profil penerbitanTrue:

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

Layanan Kudu

Untuk melihat file dalam penyebaran aplikasi web Azure App Service, gunakan layanan Kudu. Tambahkan scm token ke nama aplikasi web. Contohnya:

URL Hasil
http://mysite.azurewebsites.net/ Aplikasi Web
http://mysite.scm.azurewebsites.net/ Layanan kudu

Pilih item menu Konsol Debug untuk melihat, mengedit, menghapus, atau menambahkan file.

Sumber Daya Tambahan: