我可以在同一个项目中引用两个版本的dll而不把它们放在GAC中吗?

本文关键字:dll 中吗 GAC 版本 引用 项目 同一个 两个 我可以 | 更新日期: 2023-09-27 17:49:29

我可以在同一个项目中引用两个版本的dll而不把它们放在GAC中吗?

谢谢

我可以在同一个项目中引用两个版本的dll而不把它们放在GAC中吗?

你有两个问题。第一个是让你的应用编译。您有两个包含具有相同名称空间名称和类型名称的类型的程序集引用,编译器将不知道选择哪一个。您可以通过使用"extern alias"来解决这个问题,它允许您重命名其中一个程序集的名称空间。查看此问题以获得进一步帮助。

第二个问题就是你问的那个。如果没有GAC,您需要帮助CLR找到正确的DLL。您必须将dll放在单独的目录中,例如构建目录的子目录,以便CLR无法找到它们。使用构建后事件创建该目录并将dll复制到其中。给它们起不同的名字。

然后实现AppDomain.CurrentDomain.AssemblyResolve事件。CLR在找不到您隐藏的dll时将触发它。使用assembly . loadfrom()来加载并返回它所请求的程序集。e.Name属性具有完整的程序集名称,使用AssemblyName类解析该字符串并检索Version属性。

引用程序集而不将其放入GAC意味着复制项目的bin文件夹中的dll。并且在bin文件夹中不能有两个同名的dll

不能将同一程序集的引用放置两次。