有一个类库,它通过调用GetEntryAssembly()
. 但是,在 ASP.NET Web 应用程序中使用该类库,该函数返回 null。
是否可以从它调用的类库中获取 ASP.NET 应用程序可执行文件的位置?
GetCallingAssembly()
不适合,因为该函数不是直接从 Web 应用程序调用的。
有一个类库,它通过调用GetEntryAssembly()
. 但是,在 ASP.NET Web 应用程序中使用该类库,该函数返回 null。
是否可以从它调用的类库中获取 ASP.NET 应用程序可执行文件的位置?
GetCallingAssembly()
不适合,因为该函数不是直接从 Web 应用程序调用的。
查看HttpRuntime.BinDirectory -“获取当前应用程序的 /bin 目录的物理路径。”
这应该返回存储您的 Web 应用程序的所有 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("/ ”)。有什么区别?
另外,如果您需要查找程序集路径,则可以使用 string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;
查看以下内容以获取更多信息:- 如何获取代码所在的程序集的路径?
尝试使用反射,如下所示。
string path = new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath;
希望有帮助。
谢谢米林德