AppContext.BaseDirectory vs Assembly.GetEntryAssembly()。发布应用程序后位置是否相同?
AppContext.BaseDirectory vs Assembly.GetEntryAssembly().Location will be same after publishing the application?
我正在开发 ASP.NET Core 3.1 Web API
并进行 swagger
设置。我已将 swagger 文档添加到我的项目中。
- 右击
API Project
-> Build
-> Output
这将在我的项目根文件夹中生成 xxx.xml
文件。
右击 -> xxx.xml
-> Copy To Output Directory
-> Copy Always
我在Startup.cs
中的swagger配置中参考xxx.xml
文件如下
var xmlCommentsFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlCommentsFullPath = Path.Combine(AppContext.BaseDirectory, xmlCommentsFile);
options.IncludeXmlComments(xmlCommentsFullPath);
这里我应该用AppContext.BaseDirectory
还是Assembly.GetEntryAssembly().Location
?
虽然 运行 这在我的本地开发中,但我可以看到它进入内部 bin\Debug\netcoreapp3.1\
但发布后文件夹结构将相同吗?。那么发布和部署后会选择正确的路径吗?
System.AppContext.BaseDirectory
应该指向包含托管入口点程序集的文件夹,无论是 bin\Debug\netcoreapp3.1\
、bin\x64\release\netcoreapp3.1\
还是其他地方。
您可以 for example 使用此 属性 获取 single-file 可执行文件的实际位置,该可执行文件从一个文件夹中提取并复制到另一个临时文件夹中,然后 运行.
我正在开发 ASP.NET Core 3.1 Web API
并进行 swagger
设置。我已将 swagger 文档添加到我的项目中。
- 右击
API Project
->Build
->Output
这将在我的项目根文件夹中生成
xxx.xml
文件。右击 ->
xxx.xml
->Copy To Output Directory
->Copy Always
我在
Startup.cs
中的swagger配置中参考xxx.xml
文件如下
var xmlCommentsFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlCommentsFullPath = Path.Combine(AppContext.BaseDirectory, xmlCommentsFile);
options.IncludeXmlComments(xmlCommentsFullPath);
这里我应该用AppContext.BaseDirectory
还是Assembly.GetEntryAssembly().Location
?
虽然 运行 这在我的本地开发中,但我可以看到它进入内部 bin\Debug\netcoreapp3.1\
但发布后文件夹结构将相同吗?。那么发布和部署后会选择正确的路径吗?
System.AppContext.BaseDirectory
应该指向包含托管入口点程序集的文件夹,无论是 bin\Debug\netcoreapp3.1\
、bin\x64\release\netcoreapp3.1\
还是其他地方。
您可以 for example 使用此 属性 获取 single-file 可执行文件的实际位置,该可执行文件从一个文件夹中提取并复制到另一个临时文件夹中,然后 运行.