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

C# 我可以在同一个项目中引用一个dll的两个版本而不将它们放在GAC中吗?,c#,.net,C#,.net,我可以在同一个项目中引用一个dll的两个版本而不将它们放在GAC中吗 谢谢,您不能两次放置同一程序集的引用。引用程序集而不将其放入GAC意味着复制项目bin文件夹中的dll。bin文件夹中不能有两个同名的DLL。您有两个问题。首先是让你的应用程序编译。有两个程序集引用包含具有相同命名空间名称和类型名称的类型,编译器将不知道选择哪一个。通过使用“extern alias”可以解决这个问题,它允许您重命名其中一个程序集的命名空间。查看以获得进一步帮助 第二个问题是你问的问题。如果没有GAC,您需要帮

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


谢谢,您不能两次放置同一程序集的引用。

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

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

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


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

您的答案不正确。这可以使用GAC完成,但这是不明智的。我认为我们不能添加相同程序集的引用,即使它在GAC中。不,你不能这样做。因为如果您尝试通过选择多个版本来执行此操作,它将显示一个错误。程序集已在项目中引用。尽管您应该尽可能避免加载同一程序集的多个版本,但这是非常可行的:,您到底为什么要这样做?