无法从特定文件夹加载程序集
本文关键字:文件夹 加载 程序集 | 更新日期: 2023-09-27 18:29:33
所以这是我的问题-我有一个应用程序"A",它使用一个通用的dll"Login.dll"。此通用dll被放置在文件夹"CommonDll"中。这个dll应该被许多应用程序访问。为此,我将以下代码放入调用应用程序"A"的CONFIG中
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Login" culture="neutral" publicKeyToken="105c4b5bbc9d3d16"/>
<codeBase version="1.0.0.0" href="file:///C:/CommonDll/Login.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
这在我的本地机器上运行得很好。但是,如果我在其他机器上放置相同的文件夹结构并部署此应用程序,则会出现错误无法加载文件或程序集"Login,Version=1.0.0.0,Culture=neutral,PublicKeyToken=1054b5bbc9d3d16"或其依赖项之一。系统找不到指定的文件。
但在客户端机器上,如果我运行这个
file:///C:/CommonDll/Login.dll
这是针对正确的dll。
任何建议或观点都将不胜感激。。。
如果您使用自动程序集解析,您的问题应该得到解决。我喜欢使用以下代码:
var yourCommondDllFolder = new DirectoryInfo("C:/CommonDll/").GetFiles("*.dll");
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
var dll = yourCommondDllFolder.FirstOrDefault(fi => fi.Name == args.Name);
if (dll == null)
{
return null;
}
return Assembly.Load(dll.FullName);
};
当程序集无法加载时,您的应用程序域尝试解析该程序集。