C# AppContext.BaseDirectory vs Assembly.GetEntryAssembly()。发布应用程序后位置是否相同?

C# AppContext.BaseDirectory vs Assembly.GetEntryAssembly()。发布应用程序后位置是否相同?,c#,filepath,asp.net-core-3.1,C#,Filepath,Asp.net Core 3.1,我正在开发ASP.NET Core 3.1 Web API,并进行了自我炫耀设置。我已经在我的项目中添加了swagger文档 右键单击API项目->构建->输出 这将在我的项目根文件夹中生成xxx.xml文件 右键单击->xxx.xml->复制到输出目录->始终复制 我在Startup.cs中的swagger配置中引用xxx.xml文件,如下所示 var xmlCommentsFile=${Assembly.GetExecutionGassembly.GetName.Name}.xml; var

我正在开发ASP.NET Core 3.1 Web API,并进行了自我炫耀设置。我已经在我的项目中添加了swagger文档

右键单击API项目->构建->输出 这将在我的项目根文件夹中生成xxx.xml文件

右键单击->xxx.xml->复制到输出目录->始终复制

我在Startup.cs中的swagger配置中引用xxx.xml文件,如下所示

var xmlCommentsFile=${Assembly.GetExecutionGassembly.GetName.Name}.xml; var xmlcomentsfullpath=Path.CombineAppContext.BaseDirectory,xmlcomentsfile; options.IncludeXmlCommentsxmlCommentsFullPath; 这里我应该使用AppContext.BaseDirectory或Assembly.GetEntryAssembly.Location

在本地开发中运行时,我可以在bin\Debug\netcoreapp3.1\中看到这一点,但发布后文件夹结构将相同?。因此,发布和部署后将选择正确的路径?

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

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

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


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

阅读您的文章后,在my.NET Core和.NET 5.0应用程序中,我将Environment.CurrentDirectory替换为AppContext.BaseDirectory,它在代码中的任何地方都可以使用,效果非常好:例如,要获取安装目录中MyFileName的路径,我使用System.IO.path.CombineAppContext.BaseDirectory,@MyFileName;在阅读了您的帖子后,在我的.NET Core和.NET 5.0应用程序中,我在代码中的任何地方都用AppContext.BaseDirectory替换了Environment.CurrentDirectory,效果非常好:例如,要在安装目录中获取MyFileName的路径,我使用System.IO.path.CombineAppContext.BaseDirectory,@MyFileName;