【发布时间】:2018-01-24 04:17:03
【问题描述】:
好的,所以我这里有一个非常独特的问题。我收到一个错误,基本上是因为我引用了最新版本的 dll,我仍然希望默认保留对它的引用,因为我的项目中的大部分代码都应该使用这个 dll。发生错误是因为它试图使用仅在旧版本的 dll 中可用的对象。所以我想在这段特定的代码中使用这个旧版本的 dll。我尝试使用Assembly.LoadFrom(pathToAssembly) 加载这个旧版本的dll,但它似乎仍然引用了新版本的dll。有没有人知道如何将这个 dll 的引用替换为旧版本?
【问题讨论】:
-
您无法在运行时更改程序集。 Link 你可以使用
Assembly.LoadFile而不是Assembly.LoadFrom然后调用 CreateInstance 方法,你想从旧的 dll 中创建对象 -
如何将您的代码分成不同的项目,以便它们具有不同的引用集。
-
@DaniDev 奇怪的建议...为什么您认为针对不同版本的非强签名程序集进行编译会以某种方式有助于在运行时加载两个版本?
-
@Alexei Levenkov“不同版本的非强签名程序集”不确定这就是我的建议。我要说的是,如果 OP 可以梳理出需要旧版本(ddl)的功能并独立编译,他可以安全地在主项目中加载/编译新版本。
-
@DaniDev 所以你的建议实际上是“只在单独的进程中运行代码”?这不是我从问题中得到的,因为 OP 似乎希望同时在同一进程中运行两段代码,但针对不同版本的程序集。请注意,我可能会完全误解 OP,也可能会误解您的评论...考虑将其实际转换为答案,以便您可以清楚地解释所有步骤。
标签: c# asp.net .net dll .net-assembly