【发布时间】:2012-10-05 05:33:54
【问题描述】:
有一个类库通过调用GetEntryAssembly() 来获取它的执行程序集位置。但是在 ASP.NET Web 应用程序中使用该类库,该函数返回 null。
是否可以从它调用的类库中获取 ASP.NET 应用程序可执行文件的位置?
GetCallingAssembly() 不适合,因为该函数不是直接从 Web 应用程序调用的。
【问题讨论】:
有一个类库通过调用GetEntryAssembly() 来获取它的执行程序集位置。但是在 ASP.NET Web 应用程序中使用该类库,该函数返回 null。
是否可以从它调用的类库中获取 ASP.NET 应用程序可执行文件的位置?
GetCallingAssembly() 不适合,因为该函数不是直接从 Web 应用程序调用的。
【问题讨论】:
查看HttpRuntime.BinDirectory - “获取当前应用程序的 /bin 目录的物理路径。”
这应该会返回您的网络应用程序的所有 dll 都存储在其中的目录。
编辑:
好的,根据您的反馈,这可能有效:
var webApplicationType = typeof(MyWebApplicationClass);
var assemblyPathAndName = new System.Uri(webApplicationType.Assembly.CodeBase)).LocalPath;
您需要将“MyWebApplicationClass”替换为 Web 项目中您想要的程序集路径和名称的任何类的名称。
【讨论】:
我认为 Server.MapPath 可以解决您的问题,请查看此答案:- Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?
如果你还需要找到汇编路径,那么你可以使用 string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;
查看以下内容了解更多信息:- How do I get the path of the assembly the code is in?
【讨论】:
尝试使用反射,如下所示。
string path = new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath;
希望对您有所帮助。
谢谢 温和的
【讨论】: