所以这是我的问题 - 我有一个申请" A"它使用常见的dll" Login.dll"。 这个常见的dll放在一个文件夹" CommonDll" 。这个dll应该被许多应用程序访问。为此,我在调用应用程序的配置中添加了以下代码" A"
<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>
这在我的本地机器上工作得非常好。但是,如果我将相同的文件夹结构放在其他计算机上并部署此应用程序,它会给我一个错误 无法加载文件或程序集&#39;登录,版本= 1.0.0.0,文化=中立,PublicKeyToken = 105c4b5bbc9d3d16&#39;或其中一个依赖项。系统找不到指定的文件。
但是在客户端机器上如果我运行这个
file:///C:/CommonDll/Login.dll
这是针对正确的dll。
任何建议或观点都受到高度赞赏......
答案 0 :(得分:0)
如果您使用自动装配解决,您的问题将得到解决。我想使用以下代码:
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);
};
比您的应用程序域尝试在无法加载时解析程序集。