我正在引用一个签名的程序集。在运行时,我可以使用该程序集的任何版本,而不仅仅是我编译到的那个。
如何做到这一点?
不,那是行不通的。CLR 将验证程序集版本号,期望得到您的主程序编译所针对的版本号。您必须使用 app.config 文件中的<bindingRedirect>
元素来说服它可以使用不同的版本。
那是一个滑坡。如果程序集的公共接口发生更改并且需要重新编译客户端,请考虑仅更改 [AssemblyVersion] 属性。现在,您将得到的异常是识别出真正问题的异常。这是另一种滑坡,但您将拥有更多的控制权。
作为比较,这是 .NET 框架中所有基础程序集的工作方式。它们在 .NET 2.0 RTM 和 3.5 SP1 之间有很多修订,包括许多不可见的修补程序。但是【AssemblyVersion】还是2.0.0.0,微软只修改了【AssemblyFileVersion】。
在 IDE 中,确保针对引用将“特定版本”设置为 false,或添加<SpecificVersion>False</SpecificVersion>
到 csproj 中的引用。