Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从任何版本加载程序集_C#_Assemblies_Version_Assemblyversions - Fatal编程技术网

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不能可靠地作为“仅使用特定版本”工作,除非它已签名。您能否适当地更改问题的标题,以便人们可以更容易地进行搜索?