Visual Studio 不部署 ASP.NET 个核心视图,当它们在一个区域时
Visual Studio does not deploy ASP.NET Core views when they are in an area
设置
- Visual Studio 2015(更新 3 和截至今天的最新修补程序)
- .NET Core SDK(预览版 2)已安装
- 创建一个新的ASP.NET核心项目
- 添加一个新区域,注册并在其中添加视图
- 在 Visual Studio
中使用 web 部署将其部署到 IIS
我的一部分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>
表现不佳的家伙。
设置
- Visual Studio 2015(更新 3 和截至今天的最新修补程序)
- .NET Core SDK(预览版 2)已安装
- 创建一个新的ASP.NET核心项目
- 添加一个新区域,注册并在其中添加视图
- 在 Visual Studio 中使用 web 部署将其部署到 IIS
我的一部分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>
表现不佳的家伙。