从 ASP.Net 项目中查找 DLL 的路径
Finding path to DLL from ASP.Net project
我有一个 MVC 网站,我想从该网站加载解决方案中另一个项目的 DLL。这在控制台应用程序中很容易。问题是我想在应用程序域中加载 dll(因此不能使用项目或文件引用)。网站项目和DLL项目互不信任你看。
我已经使用构建事件将 DLL 复制到 bin/Debug 或 bin/Release 文件夹中,但是当我 运行 应用程序调用 Assembly.GetExecutingAssembly.Location 时,会提供一些临时文件夹只有website.DLL另一个文件夹中的另一个dll,文件夹之间没有明显的关系。
如何在 asp.net MVC 站点中找到 dll 的路径,将其加载到没有直接引用的应用程序域中?
您可以使用
System.Web.HttpContext.Current.Server.MapPath(path);
或使用HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
或(如果您使用 ASP.NET 内核)
// DI
IHostingEnvironment _appEnvironment;
Path.Combine(_appEnvironment.ApplicationBasePath, "bin", "Debug", "YourDllName.dll");
路径类似于 var path = "~/bin/Debug/YourDllName.dll";
我有一个 MVC 网站,我想从该网站加载解决方案中另一个项目的 DLL。这在控制台应用程序中很容易。问题是我想在应用程序域中加载 dll(因此不能使用项目或文件引用)。网站项目和DLL项目互不信任你看。
我已经使用构建事件将 DLL 复制到 bin/Debug 或 bin/Release 文件夹中,但是当我 运行 应用程序调用 Assembly.GetExecutingAssembly.Location 时,会提供一些临时文件夹只有website.DLL另一个文件夹中的另一个dll,文件夹之间没有明显的关系。
如何在 asp.net MVC 站点中找到 dll 的路径,将其加载到没有直接引用的应用程序域中?
您可以使用
System.Web.HttpContext.Current.Server.MapPath(path);
或使用HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
或(如果您使用 ASP.NET 内核)
// DI
IHostingEnvironment _appEnvironment;
Path.Combine(_appEnvironment.ApplicationBasePath, "bin", "Debug", "YourDllName.dll");
路径类似于 var path = "~/bin/Debug/YourDllName.dll";