調用匯編項目名稱我有MyAwesomeProject其中進口MyAwesomeLogger並調用它:獲取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。我經歷了很多鏈接,但大多數解決方案都顯示如何從mvc項目本身獲取項目名稱,而不是像這樣的dll。什麼是最簡單的傻瓜證明方式來做到這一點?
我想另一件事是:
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等等),你可能會嘗試Assembly.GetCallingAssembly()? – apr
? [鏈接](http://stackoverflow.com/questions/5478814/c-sharp-get-calling-methods-assembly) – apr