我的ASP.Net Core应用在项目根目录下有一个App_Data文件夹:
(我记得-我可能会误会了-我必须在项目中手动创建该文件夹。模板并未自动将其提供给我。)
我的问题是,发布项目时,对App_Data文件夹中文件的更改未推送到Azure。我正在使用VS Pro 2019。
当我第一次发布项目时,App_Data文件夹及其内容被推送到Azure。但是,正如我所说,更改被忽略了。
这是我不明白的大问题:显然,<!DOCTYPE html>
<!-- saved from url=(0028)http://localhost:57362/test/ -->
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<div style="background: rgba(135, 206, 235, 0.7); border: 3px double; box-sizing: content-box; display: none; pointer-events: none; position: absolute; z-index: 32767;"></div>
<textarea style="border-radius: 0px; margin: 0px; opacity: 0; position: absolute; top: -32767px; z-index: 32767;"></textarea>
<table style="border-collapse: collapse; visibility: hidden;">
<tr>
<td style="border: 1px solid; padding: 0px; width: 1px;"></td>
</tr>
</table>
</body>
</html>
文件夹很特殊。至少,它在发布配置文件中有一个条目。而且,对于发布(或不发布)此魔术文件夹中的文件存在困难,我已经看到了许多问题和未知情的答案。但是我从未见过任何有关官方文档谈论这种魔术的东西。
这是我的发布个人资料:
App_Data
这是我的项目文件(为简便起见进行了编辑):
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<ResourceId>/subscriptions/xxx/resourceGroups/Production/providers/Microsoft.Web/sites/xxx</ResourceId>
<ResourceGroup>Production</ResourceGroup>
<PublishProvider>AzureWebSite</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>http://xxx.azurewebsites.net</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>xxx</ProjectGuid>
<MSDeployServiceURL>xxx.scm.azurewebsites.net:443</MSDeployServiceURL>
<DeployIisAppPath>xxx</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>True</EnableMSDeployBackup>
<UserName>$xxx</UserName>
<_SavePWD>True</_SavePWD>
<_DestinationType>AzureWebSite</_DestinationType>
<InstallAspNetCoreSiteExtension>False</InstallAspNetCoreSiteExtension>
<TargetFramework>netcoreapp2.2</TargetFramework>
<SelfContained>false</SelfContained>
<_IsPortable>true</_IsPortable>
</PropertyGroup>
</Project>
答案 0 :(得分:1)
答案 1 :(得分:0)
根据官方documentation:
“内容”项目列表包含除发布的文件 构建输出。默认情况下,匹配模式
wwwroot/**
的文件 包含在“内容”项中。
含义(未明确说明)是仅发布构建输出和wwwroot/**
。
稍后,在同一文档中,他们提供了一些示例示例(无说明),这些示例将其他文件添加到正在发布的文件集中。根据这些示例,我制作了此标记。将其添加到项目(csproj
)文件中将导致发布App_Data
文件夹中更改的文件:
<ItemGroup>
<DotnetPublishFiles Include="App_Data/**/*">
<DestinationRelativePath>App_Data/%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</DotnetPublishFiles>
</ItemGroup>
这仍然留下了两个相关的奥秘:
<ExcludeApp_Data>
元素的真正作用是什么?App_Data
文件夹推送到服务器。当实验和上面提到的文档说随后的发布尝试忽略了App_Data
文件夹(实际上是wwwroot
以外的任何文件夹)时,为什么会发生这种情况?