Visual Studio 不部署 ASP.NET 个核心视图,当它们在一个区域时

Visual Studio does not deploy ASP.NET Core views when they are in an area

设置

我的一部分project.json

"publishOptions": {
  "include": [
    "wwwroot",
    "Views",
    "Areas/**/Views",
    "appsettings.json",
    "web.config"
  ]
},

我的发布配置文件

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>http://somedomain/</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <PublishFramework>netcoreapp1.0</PublishFramework>
    <UsePowerShell>True</UsePowerShell>
    <EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>
    <MSDeployServiceURL>http://someip</MSDeployServiceURL>
    <DeployIisAppPath>sitename</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <EnableMSDeployBackup>False</EnableMSDeployBackup>
    <UserName>username</UserName>
    <_SavePWD>True</_SavePWD>
    <PublishDatabaseSettings>
      <Objects xmlns="" />
    </PublishDatabaseSettings>
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect>
    <AuthType>NTLM</AuthType>
  </PropertyGroup>
</Project>

问题

成功部署后,区域视图从服务器中丢失。没有 Area 文件夹,该区域的视图也不位于 Views 文件夹中。所有其他视图(区域外)都存在。

是我做错了什么还是这个问题是已知的?有没有人遇到同样的问题,如果有,解决方案是什么?

在您的网络应用程序的 project.json 文件中,您需要告诉它要包含的内容:

"publishOptions": {
    "include": [
        "wwwroot",
        "Views",
        "Areas/**/Views",
        "appsettings.json",
        "navigation.xml",
        "web.config"
    ]
},

https://github.com/aspnet/Mvc/issues/4645 中所述的临时修复是添加

"**/*.cshtml",

publishOptions.include.

在我的案例中有效。

我发现使用 VS 2015 更新 3 到 Azure 的 ASP.NET 应用程序的 webdeploy 没有正确获取所有必要的文件;特别是我添加到我的项目中的新视图、新字体和新 CSS 文件。

操纵项目属性 >> Package/Publish Web >> [要部署的项目] 无济于事 - 这些新项目将被忽略。

查看我的网站并使用 Chrome 控制台,我注意到了缺失的项目,并编辑了 .csproj 文件以添加缺失的项目;就我而言:

<Content Include="Views\Dashboard\Index.cshtml" />
<Content Include="fonts\glyphicons-halflings-regular.woff" />
<Content Include="Content\jquery-confirm.min.css" />

在明显的地方 - 例如找到其他视图文件并插入我的文件。

然后我发现 Azure 会假装 *.woff 文件丢失 (404)。他们不是,所以我不得不将以下内容添加到 web.config:

<system.webServer>
    <staticContent>
        <mimeMap fileExtension="woff" mimeType="application/font-woff" />
    </staticContent>
</system.webServer>

表现不佳的家伙。