C# 试图通过反射加载应用程序并获取错误“;无法加载文件或程序集…系统找不到指定的文件;

C# 试图通过反射加载应用程序并获取错误“;无法加载文件或程序集…系统找不到指定的文件;,c#,reflection,C#,Reflection,它试图查找的程序集不是根程序集-它是一个引用的程序集,但它位于同一文件夹中,并且Directory.GetCurrentDirectory()是包含所有文件的文件夹 我卡住了-有什么建议吗?您可以: 创建新的AppDomain以加载程序集(并将AppDomain的基本目录设置为包含所有程序集的目录) 附加AppDomain.AssemblyResolve的处理程序,以帮助CLR查找程序集的依赖项 您可以将相关目录添加到要探测的路径列表中。但是,它需要驻留在应用程序目录下的某个位置。有关更多信息,

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

我卡住了-有什么建议吗?

您可以:

  • 创建新的
    AppDomain
    以加载程序集(并将
    AppDomain
    的基本目录设置为包含所有程序集的目录)
  • 附加
    AppDomain.AssemblyResolve
    的处理程序,以帮助CLR查找程序集的依赖项
  • 您可以将相关目录添加到要探测的路径列表中。但是,它需要驻留在应用程序目录下的某个位置。有关更多信息,请参见元素
  • 您可以:

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

  • 你可以试着用这样的东西

    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临时目录中。但是,由于文件处于同一级别,它们应该并排存在那里。

    您可以尝试使用类似的方法

    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临时目录中。但是,由于文件处于同一级别,它们应该并排存在那里。

    如果使用,可以指定程序集的文件路径

    从上下文加载允许 要从路径加载的程序集不是 包括在探测中,但允许 要查找的路径上的依赖项 并加载,因为路径 资料由 上下文

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

    从上下文加载允许 要从路径加载的程序集不是 包括在探测中,但允许 要查找的路径上的依赖项 并加载,因为路径 资料由 上下文


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

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