Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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# 如何确定GAC程序集的最新版本号_C#_.net 2.0_Gac_Version Numbering - Fatal编程技术网

C# 如何确定GAC程序集的最新版本号

C# 如何确定GAC程序集的最新版本号,c#,.net-2.0,gac,version-numbering,C#,.net 2.0,Gac,Version Numbering,我正在尝试为我的应用程序创建一个诊断日志,该日志将显示安装在GAC中的程序集的最新版本号。例如,GAC中有两个相同程序集的版本:foo.dll版本1.0.0.0和foo.dll版本2.0.0.0。我需要一个如下所示的函数: GetLatestGacVersion("foo.dll"); // returns "2.0.0.0" 有人知道最好的方法吗 谢谢 在Fusion API(Fusion.dll)周围使用一个函数,您可以枚举GAC中的程序集,按名称筛选它们,并按版本排序。最简单的方法是:

我正在尝试为我的应用程序创建一个诊断日志,该日志将显示安装在GAC中的程序集的最新版本号。例如,GAC中有两个相同程序集的版本:foo.dll版本1.0.0.0和foo.dll版本2.0.0.0。我需要一个如下所示的函数:

GetLatestGacVersion("foo.dll");  // returns "2.0.0.0"
有人知道最好的方法吗

谢谢

Fusion API(Fusion.dll)周围使用一个函数,您可以枚举GAC中的程序集,按名称筛选它们,并按版本排序。

最简单的方法是:

Assembly a = Assembly.LoadWithPartialName ("foo.dll");
return a.GetName ().Version
这将自动为您提供来自GAC的最新版本程序集

请注意,出于充分的理由,该方法被弃用。向GAC索要一个不具体的版本可能会引起很多麻烦


在不知道自己想要做什么的情况下,很难给出进一步的建议,但一般来说,如果你正在寻找一个特定的版本,你应该探索它,而不是仅仅加载“某物”。

要澄清的是:除了问题所要求的,我不想做任何事情,也就是说:找到GAC程序集的最新版本号,以便记录它。我很谨慎,因为这是一种不推荐的方法。但是,我认为我的应用程序是安全的,因为我不会将LoadWithPartialName()方法返回的Assembly对象用于任何其他用途。来自MSDN:“此方法首先调用Load。如果找不到程序集,此方法将从全局程序集缓存返回具有相同简单名称和最高版本号的程序集。”非常感谢!GAC中有我的应用程序使用的程序集。我正试图让应用程序将该程序集的最新版本号打印到日志/对话框屏幕上,以便于技术支持。似乎不推荐使用的LoadWithPartialName方法满足了这些最低要求。诚然,这可能是完成我任务的更正确的方法。然而,不推荐使用的LoadWithPartialName方法似乎满足了我在大多数情况下的最低要求,只需一行代码,没有COM互操作。非常感谢你的建议!