C# 从任何版本加载程序集
我正在引用已签名的程序集。在运行时,我可以使用该程序集的任何版本,而不仅仅是编译到的版本C# 从任何版本加载程序集,c#,assemblies,version,assemblyversions,C#,Assemblies,Version,Assemblyversions,我正在引用已签名的程序集。在运行时,我可以使用该程序集的任何版本,而不仅仅是编译到的版本 如何实现这一点?在IDE中,确保针对引用将“特定版本”设置为false,或者在csproj中将false添加到引用中。不,这不起作用。CLR将验证程序集版本号,期望得到主程序编译时所依据的版本号。您必须使用app.config文件中的来说服它使用不同的版本是可以的 那是一个很滑的斜坡。如果更改程序集的公共接口并要求客户端重新编译,只考虑更改[汇编版本]属性。现在,您将得到一个异常,它标识了一个真正的问题。这
如何实现这一点?在IDE中,确保针对引用将“特定版本”设置为false,或者在csproj中将
false
添加到引用中。不,这不起作用。CLR将验证程序集版本号,期望得到主程序编译时所依据的版本号。您必须使用app.config文件中的来说服它使用不同的版本是可以的
那是一个很滑的斜坡。如果更改程序集的公共接口并要求客户端重新编译,只考虑更改[汇编版本]属性。现在,您将得到一个异常,它标识了一个真正的问题。这是另一种滑坡,但你会有更多的控制权
作为比较,这是.NET framework中所有基本程序集的工作方式。在.NET2.0RTM和3.5SP1之间有很多版本,包括许多不可见的修补程序。但是[AssemblyVersion]仍然是2.0.0.0,Microsoft只修改[AssemblyFileVersion]。@Marc:运行时如何确定要加载哪个程序集(从多个版本中选择)?(我假设在GAC中放置了一个签名程序集)。@Marc:我搜索了上面我问你的问题&运行时似乎会选择程序集的最新版本。是吗?@shahkalpesh-我不知道;我几乎从不使用GAC@Yaron纳维-应该这样做。事实上,IIRC it不能可靠地作为“仅使用特定版本”工作,除非它已签名。您能否适当地更改问题的标题,以便人们可以更容易地进行搜索?