如何在 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 项目

ASP.NET Core 1.0 部署 HTTPS

.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介

从 ASP.NET Core 1.0 中的 ViewModel 元数据输入占位符