AppContext.BaseDirectory 与 Assembly.GetEntryAssembly().Location 发布应用程序后会相同吗?

fin*_*s10 5 c# filepath asp.net-core-3.1

我正在开发ASP.NET Core 3.1 Web API并有我的swagger设置。我已将 swagger 文档添加到我的项目中。

  1. 右键API Project-> Build->Output

在此输入图像描述

  1. 这将在我的项目根文件夹中生成xxx.xml文件。

  2. 右键-> xxx.xml-> Copy To Output Directory->Copy Always

  3. 我引用xxx.xmlswagger 配置中的文件Startup.cs如下

var xmlCommentsFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlCommentsFullPath = Path.Combine(AppContext.BaseDirectory, xmlCommentsFile);

options.IncludeXmlComments(xmlCommentsFullPath);
Run Code Online (Sandbox Code Playgroud)

这里我应该使用AppContext.BaseDirectoryor Assembly.GetEntryAssembly().Location?

在我的本地开发中运行它时,我可以看到它在里面bin\Debug\netcoreapp3.1\,但发布后文件夹结构将是相同的?。那么发布部署后会选择正确的路径吗?

mm8*_*mm8 5

System.AppContext.BaseDirectory应该指向包含托管入口点程序集的文件夹,无论是bin\Debug\netcoreapp3.1\bin\x64\release\netcoreapp3.1\还是其他地方。

例如,您可以使用此属性来获取单文件可执行文件的实际位置,该可执行文件在运行之前从一个文件夹中提取并复制到另一个临时文件夹中。