Как получить папку bin в ASP.NET Core 1.0

С asp.net core 1.0 Добавлена ​​много функциональности. Но путь Bin Folder невозможен.

Кто-нибудь может знать, как мы можем получить путь к папке bin для приложения asp.net core 1.0.

Ответ 1

Ну, папка bin существует, но она перемещается в папку артефактов рядом с файлом решения. Поскольку ASP.NET Core RC 1 компилирует все в памяти, вы найдете пустую папку bin. Но если вы установите для параметра "Производить вывод на сборке" значение true (щелкните правой кнопкой мыши файл проекта → вкладка "Свойства" и "сборка" ), то вы найдете сгенерированные файлы в папке bin.

Я не думаю, что есть какое-либо прямое свойство, доступное для того, чтобы получить путь к этому, но вы можете использовать то же решение, на которое указывает @Nikolay Kostov, чтобы получить путь к приложению. И затем, используя классы System.IO, перейдите в папку bin.

Код обновлен для ядра ASP.NET, как указано здесь.

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

Ответ 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

Ответ 3

Альтернативный способ (соответствует AppDomain.BaseDirectory):

AppContext.BaseDirectory

Ответ 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
}