从 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";