web-dev-qa-db-ja.com

ASP.NET Core 1.0でbinフォルダーを取得する方法

Asp.net core 1.0では、多くの機能が追加されています。ただし、Bin Folderパスを取得する方法はありません。

Asp.net core 1.0アプリケーションのbinフォルダーパスを取得する方法を誰でも知ってください。

20
Jalpesh Vadgama

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

これにより、アセンブリのディレクトリが取得され、そこから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
28
Shaun Luttin

別の方法(AppDomain.BaseDirectoryに対応):

AppContext.BaseDirectory
25
Rolf Kristensen

/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
}
0
Nikolay Kostov