gpt4 book ai didi

c# - Assembly.LoadFrom() 抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:43 26 4
gpt4 key购买 nike

public Assembly LoadAssembly(string assemblyName) //@"D://MyAssembly.dll"

{
m_assembly = Assembly.LoadFrom(assemblyName);
return m_assembly;
}

如果我将“MyAssembly.dll”同时放入 D: 并将其副本放入“bin”目录,该方法将成功执行。但是,我删除其中任何一个,它都会抛出异常。消息如下:

无法加载文件或程序集“MyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。

我想加载存在于 D: 中的程序集。为什么我需要同时将其副本放入“bin”目录?

最佳答案

也许 MyAssembly.dll 引用了一些不在目录中的程序集。将所有程序集放在同一目录中。

或者您可以处理 AppDomain.CurrentDomain、AssemblyResolve 事件来加载所需的程序集

private string asmBase ;
public void LoaddAssembly(string assemblyName)
{
asmBase = System.IO.Path.GetDirectoryName(assemblyName);

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(assemblyName));
}

private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
//This handler is called only when the common language runtime tries to bind to the assembly and fails.

//Retrieve the list of referenced assemblies in an array of AssemblyName.
Assembly MyAssembly, objExecutingAssemblies;
string strTempAssmbPath = "";
objExecutingAssemblies = args.RequestingAssembly;
AssemblyName[] arrReferencedAssmbNames = objExecutingAssemblies.GetReferencedAssemblies();

//Loop through the array of referenced assembly names.
foreach (AssemblyName strAssmbName in arrReferencedAssmbNames)
{
//Check for the assembly names that have raised the "AssemblyResolve" event.
if (strAssmbName.FullName.Substring(0, strAssmbName.FullName.IndexOf(",")) == args.Name.Substring(0, args.Name.IndexOf(",")))
{
//Build the path of the assembly from where it has to be loaded.
strTempAssmbPath = asmBase + "\\" + args.Name.Substring(0, args.Name.IndexOf(",")) + ".dll";
break;
}

}
//Load the assembly from the specified path.
MyAssembly = Assembly.LoadFrom(strTempAssmbPath);

//Return the loaded assembly.
return MyAssembly;
}

关于c# - Assembly.LoadFrom() 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6555229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com