更新2:该文件未发布。这是错的。但是,我无法弄清楚为什么我的一台计算机能够以正确的方式发布它,而另一台计算机不能在Visual Studio升级之后发布。
更新:在两台不同的计算机上运行相同的解决方案,其中APIProject.xml文件从一台计算机正确发布而另一台计算机没有正确发布,现在只剩下一个区别。发布工作的计算机运行Visual Studio 2017 Enterprise的未更新版本。 15.5.2不起作用,15.4.2起作用。
我收到了这个错误:
FileNotFoundException:找不到文件 'd:\家\站点\ wwwroot的\ APIProject.xml'
该文件放在bin \ Debug \ netcoreapp2.0中 它在本地工作,但发布到Azure App服务时崩溃。
我正在发布我创建的暂存插槽,尚未尝试生产。发布将替换目标上的所有文件。
这是我的Swagger设置,但过去常常工作:)
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Register the Swagger generator, defining one or more Swagger documents
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "Ecommerce/Product API",
Description = "Handles API based shopping functionality",
TermsOfService = "Terms of service should be contracted with inidividually",
Contact = new Contact { Name = "Magnus", Email = "magnus@secret", Url = "" },
License = new License { Name = "Use under permission from our Group", Url = "http://aboutno" }
});
// Set the comments path for the Swagger JSON and UI.
var basePath = PlatformServices.Default.Application.ApplicationBasePath;
var xmlPath = Path.Combine(basePath, "APIProject.xml");
c.IncludeXmlComments(xmlPath);
});
}
改变之处是我在Program.cs中添加了“UseSetting”-row以获取无法启动的错误。在添加该行之前,我没有收到开发人员错误,只有最终用户错误页面。
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights()
.UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
.UseStartup<Startup>()
.Build();
我正在尝试使用调试模式发布。也尝试使用Release作为下面的一个答案,但没有区别。
我检查了另一台计算机上的代码并从该计算机上发布了,所以这个问题对我来说更加奇怪了!
答案 0 :(得分:2)
确保调试和释放模式中的csproj文件中存在等效块。我猜你正在发布发布模式。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>bin\Release\netcoreapp2.0\APIProject.xml</DocumentationFile>
</PropertyGroup>
答案 1 :(得分:2)
今天,当我发布由.NET Core 2.1支持的ASP.NET核心Web应用程序到Azure App Service时,我遇到了同样的问题。
在调试模式下运行时,它在本地工作正常,但在Release中失败。原因是我在*.csproj
文件中没有以下配置部分。
<Project Sdk="Microsoft.NET.Sdk.Web">
...
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>bin\Release\netcoreapp2.1\OneGit.Api.xml</DocumentationFile>
</PropertyGroup>
...
</Project>
代表XML documentation file
=&gt;部分中的复选框Build
。右键单击项目并选择菜单项Output
时,Properties
。
答案 2 :(得分:1)
我的 .Net Core 2.0 应用程序在本地运行良好,但是在部署到Azure时抛出了毫无意义的“ 启动应用程序时发生错误。”错误。
检查日志,原因是Swagger找不到特定的.xml文件(为什么该错误消息不会让我们知道?!)
解决方案是选择“构建”选项卡,将“配置”下拉列表更改为“发布”,然后勾选此框:
就是这样。
由于某种原因,默认情况下,它被选中(填充.xml文件名)用于调试,但未选中发行版。
(叹气)
答案 3 :(得分:0)