ASP.NET Core uygulama dağıtımı için Visual Studio yayımlama profilleri (.pubxml)
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.
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
vedotnet 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
:
msbuild
MSDeploy 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ğiRelease
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 PreserveNewest
iç 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
- Web Dağıtımı (MSDeploy), web uygulamalarının ve web sitelerinin IIS sunucularına dağıtımını basitleştirir.
- Web SDK GitHub deposu: Dağıtım için dosya sorunları ve istek özellikleri.
- Web.config'i dönüştürme
ASP.NET Core