如何在ASP.NET Core 1.0中获取bin文件夹

25

随着asp.net core 1.0的发布,添加了许多功能。但是没有办法获取Bin文件夹路径。

请问有没有人知道如何获取asp.net core 1.0应用程序的bin文件夹路径?


你为什么需要一个bin文件夹? - Muqeet Khan
一个原因是检索生成的XML文档文件。 - Shaun Luttin
5个回答

38

替代的方式(对应于AppDomain.BaseDirectory):

AppContext.BaseDirectory

31

这个功能用于检索程序集的目录,从中我们可以确定 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服务上工作吗? - fahadash

10

嗯,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);
}

0

AppDomain.CurrentDomain.BaseDirectory;


0

您实际上不能获取/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的文件夹。 - Jalpesh Vadgama
其实并没有 /bin/ 文件夹。你可能想阅读这篇文章:http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html,因此项目根目录是代码启动的地方。 - Nikolay Kostov
@JalpeshVadgama:这意味着你正在IDE中运行。 - Joshua
src文件夹用于发布客户端脚本源代码。你认为ASP.NET把项目编译生成的DLL放在哪里?如果你在构建过程中将某些内容复制到输出目录,比如SQL脚本,它会被复制到bin文件夹中。要使用该SQL脚本,你需要知道该脚本文件所在的完整磁盘路径。 - ProfK
1
现在看来已经是古老的历史了,但IApplicationEnvironment已被移除。 https://github.com/aspnet/Announcements/issues/171 - Will

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接