发布到Azure不会更新App_Data中的文件

时间:2019-04-25 16:41:35

标签: visual-studio azure asp.net-core

我的ASP.Net Core应用在项目根目录下有一个App_Data文件夹:

Folders

(我记得-我可能会误会了-我必须在项目中手动创建该文件夹。模板并未自动将其提供给我。)

我的问题是,发布项目时,对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>

2 个答案:

答案 0 :(得分:1)

如果右键单击您的Web项目,然后选择“发布”>“设置”>“文件发布选项”,然后取消选中“从App_Data文件夹中排除文件”会发生什么情况?

publish

答案 1 :(得分:0)

根据官方documentation

  

“内容”项目列表包含除发布的文件   构建输出。默认情况下,匹配模式wwwroot/**的文件   包含在“内容”项中。

含义(未明确说明)是仅发布构建输出和wwwroot/**

稍后,在同一文档中,他们提供了一些示例示例(无说明),这些示例将其他文件添加到正在发布的文件集中。根据这些示例,我制作了此标记。将其添加到项目(csproj)文件中将导致发布App_Data文件夹中更改的文件:

<ItemGroup>
    <DotnetPublishFiles Include="App_Data/**/*">
        <DestinationRelativePath>App_Data/%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
    </DotnetPublishFiles>
</ItemGroup>

这仍然留下了两个相关的奥秘:

  1. <ExcludeApp_Data>元素的真正作用是什么?
  2. 显然,初始发布(来自Visual Studio)将App_Data文件夹推送到服务器。当实验和上面提到的文档说随后的发布尝试忽略了App_Data文件夹(实际上是wwwroot以外的任何文件夹)时,为什么会发生这种情况?