で呼び出すアセンブリプロジェクト名を取得します。私はMyAwesomeLoggerをインポートし、それを呼び出すMyAwesomeProjectを持ってMVC5
using MyAwesomeLogger;
using System.Web.Mvc;
public class HomeController : Controller
{
public ActionResult Index()
{
var Logger = new LogFactory.GetLogger();
Logger.Debug("Hello World");
return View();
}
}
LogFactory.GetLogger()
方法は、MyAwesomeLoggerとそれがないすべての素晴らしいものの一部の内部にあるあるロガーのファイル名を設定します。私の主な問題は、プロジェクト名を取得し、ログファイル名として設定する必要があることです。これは、コンソールアプリケーションとWebアプリケーションの両方で機能する必要があります。
前にやったことは:Assembly.GetEntryAssembly().GetName().Name;
これはコンソールアプリケーションでは機能しますが、Webでは機能しません。私は多くのリンクを見てきましたが、ソリューションのほとんどは、このようなdllからではなく、mvcプロジェクト自体からプロジェクト名を取得する方法を示しています。これを行うための最も簡単な方法は何ですか?
私が試したもう一つは、された:
var type = System.Web.HttpContext.Current.ApplicationInstance.GetType();
while (type != null && type.Namespace == "ASP")
{
type = type.BaseType;
}
var fileName = type.Assembly.GetName().Name;
上記の作品私はにHomeControllerでそれを呼び出すが、MyAwesomeLoggerはHttpContextを知らないので、私はそこにそれを呼び出すことができない場合。
プロジェクト名はアセンブリのどこにでも保持されないので、そのように取得しようとすると苦労するかもしれません。 –
Assembly.GetExecutingAssembly()を試してみてください。しかし、これは奇妙な結果になるかもしれません(あなたがcshtmlで呼び出すと、プリコンパイルされたページなどのDLLが得られるかもしれません) – apr
Assembly.GetCallingAssembly()を試すこともできますか? [link](http://stackoverflow.com/questions/5478814/c-sharp-get-calling-methods-assembly) – apr