尝试通过反射加载应用程序并获取错误“无法加载文件或程序集......系统找不到指定的文件。”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试通过反射加载应用程序并获取错误“无法加载文件或程序集......系统找不到指定的文件。”相关的知识,希望对你有一定的参考价值。

它试图找到的程序集不是根程序集 - 它是引用的程序集,但它位于同一文件夹中,而Directory.GetCurrentDirectory()是包含所有文件的文件夹。

我被困 - 任何建议?

答案

你可以:

  1. 创建一个新的AppDomain来加载程序集(并将AppDomain的基目录设置为包含所有程序集的目录)。
  2. 附加AppDomain.AssemblyResolve的处理程序以帮助CLR找到程序集的依赖项。
  3. 您可以将相关目录添加到要探测的路径列表中。但是,它需要驻留在应用程序目录下的某个位置。有关详细信息,请参阅probe元素。
另一答案

你可以尝试使用这样的东西

string myDll = string.Empty;
string location = Assembly.GetExecutingAssembly().Location;
if (location != null)
{
    myDll = string.Format(@"{0}my.assembly.name.dll", location.Substring(0, location.LastIndexOf(@"")));
}

这应该得到程序集正在运行的物理目录。这可能在Windows .NET临时目录中。但是,因为文件处于同一级别,所以它们应该并排存在。

另一答案

如果使用assembly.loadfrom,则可以指定程序集的文件路径。

load-from上下文允许从未包含在探测中的路径加载程序集,但允许查找和加载该路径的依赖项,因为路径信息由上下文维护。

另一答案

从具有引用的dll的文件夹执行程序也可以解决问题。

以上是关于尝试通过反射加载应用程序并获取错误“无法加载文件或程序集......系统找不到指定的文件。”的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集 PDFsharp

无法加载文件或程序集'System.ValueTuple'

System.BadImageFormatException:无法加载文件或程序集(来自 installutil.exe)

Tizen.NET 调试错误无法加载文件或程序集'Samsung.Sap

无法加载文件或程序集,但已加载

无法加载文件或程序集 Microsoft.CodeAnalysis