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