如何在 ASP.NET Core 1.0 中获取 bin 文件夹
Posted
技术标签:
【中文标题】如何在 ASP.NET Core 1.0 中获取 bin 文件夹【英文标题】:How to get bin folder in ASP.NET Core 1.0 【发布时间】:2016-02-20 18:16:15 【问题描述】:在 asp.net core 1.0 中添加了很多功能。但是没有办法获得 Bin 文件夹路径。
谁能知道我们如何获取 asp.net core 1.0 应用程序的 bin 文件夹路径。
【问题讨论】:
为什么要一个 bin 文件夹? @MuqeetKhan 原因之一是检索生成的 XML 文档文件。 【参考方案1】:替代方式(对应AppDomain.BaseDirectory):
AppContext.BaseDirectory
【讨论】:
【参考方案2】:这用于检索程序集的目录,我们可以从中确定bin
的位置。
var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directory = System.IO.Path.GetDirectoryName(location);
System.Console.WriteLine(directory);
输出
C:\MyApplication\bin\Debug\netcoreapp1.0
【讨论】:
适用于我的本地环境,但它可以在 Azure API 服务上运行吗?【参考方案3】:好吧,bin 文件夹确实存在,但它被移动到解决方案文件旁边的 artifacts 文件夹。由于 ASP.NET Core RC 1 编译内存中的所有内容,您会发现空的 bin 文件夹。但是如果你将“生成时生成输出”选项设置为 true(右键单击项目文件 -> 属性和生成选项卡),那么你会在 bin 文件夹中找到生成的文件。
我不认为有任何直接属性可用于获取此路径,但您可以使用@Nikolay Kostov 指出的相同解决方案来获取应用程序路径。然后使用 System.IO 类跳转到 bin 文件夹。
代码已更新至此处提到的 ASP.NET Core。
http://www.talkingdotnet.com/get-application-wwwroot-path-aspnet-core-rc2/
public Startup(IHostingEnvironment env, IApplicationEnvironment appenv)
string sAppPath = env.ContentRootPath;
string sRootPath = Path.GetFullPath(Path.Combine(sAppPath, @"..\..\"));
string sBinFolderPath = @"artifacts\bin\" + appenv.ApplicationName;
string sBinPath = Path.Combine(sRootPath, sBinFolderPath);
【讨论】:
【参考方案4】:您无法真正获得 /bin/
文件夹,因为它与您的项目无关,而且 ASP.NET 环境不知道 /bin/
文件夹是什么。
而且也不完全是/bin/
文件夹。您可能想阅读这篇文章:http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html
但是你可以得到所谓的ApplicationBasePath
,这是你的应用程序运行的目录:
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
string baseDir = appEnv.ApplicationBasePath;
// Other startup code
【讨论】:
它给了我不想要的带有 src 的文件夹 没有/bin/
文件夹。你可能想看这篇文章:docs.asp.net/en/latest/conceptual-overview/… 所以项目根目录是代码启动的地方
@JalpeshVadgama:这意味着您正在 IDE 中运行。
src
文件夹用于已发布的客户端脚本源。您认为 ASP.NET 将您的项目编译到的 DLL 放在哪里?如果您在构建期间将某些内容复制到输出,例如 SQL 脚本,则会将其复制到 bin
文件夹,并且要使用该 SQL 脚本,您需要知道该脚本文件所在位置的完整磁盘路径。
现在是古代历史,但 IApplicationEnvironment 已被删除。 github.com/aspnet/Announcements/issues/171【参考方案5】:
AppDomain.CurrentDomain.BaseDirectory;
【讨论】:
以上是关于如何在 ASP.NET Core 1.0 中获取 bin 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core 1.0 的 DI 中的 Startup 类中添加 IHttpContextAccessor?
如何在 ASP.NET Core 1.0 应用程序中使用 SqlServer.Types / 空间类型
如何将项目引用添加到 ASP.NET Core 1.0 MVC 项目