Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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#_.net_Reflection - Fatal编程技术网

C# 关于从外部程序集检索程序集版本的最有效方法的建议

C# 关于从外部程序集检索程序集版本的最有效方法的建议,c#,.net,reflection,C#,.net,Reflection,我需要迭代程序集列表并确定它们的版本号。我以前使用过System.Reflection.Assembly.GetExecutionGassembly().GetName().Version,但在本例中,我使用的是尚未加载的程序集。我知道我可以使用System.Reflection.Assembly.ReflectionOnlyLoadFrom(“Assembly.dll”),但我已经了解到,这会消耗内存,除非我在自己的应用程序域中加载程序集,然后卸载它们。ReflectionOnlyLoadFr

我需要迭代程序集列表并确定它们的版本号。我以前使用过System.Reflection.Assembly.GetExecutionGassembly().GetName().Version,但在本例中,我使用的是尚未加载的程序集。我知道我可以使用System.Reflection.Assembly.ReflectionOnlyLoadFrom(“Assembly.dll”),但我已经了解到,这会消耗内存,除非我在自己的应用程序域中加载程序集,然后卸载它们。ReflectionOnlyLoadFrom()是真的还是只从LoadFrom()加载


或者,有没有一种方法可以在不加载程序集的情况下获取版本信息?

您可以使用Mono项目的-库。

您可以使用Mono项目的-库。

我认为他们没有加载程序集就无法获取程序集版本。

我认为他们没有加载程序集就无法获取程序集版本。

试一试看看你能行

AssemblyName.GetAssemblyName("foo.dll").Version
它返回一个对象,从中可以获取主要、次要、次要修订和修订信息。根据GetAssemblyName方法上的:

如果文件包含 程序集清单。这种方法会导致 要打开和关闭的文件,但 该程序集未添加到此文件中 域名

看一看。你能行

AssemblyName.GetAssemblyName("foo.dll").Version
它返回一个对象,从中可以获取主要、次要、次要修订和修订信息。根据GetAssemblyName方法上的:

如果文件包含 程序集清单。这种方法会导致 要打开和关闭的文件,但 该程序集未添加到此文件中 域名


接受cecil的建议,因为这不会在我们的环境中引入依赖项。请注意,这里是龙!这对我们来说非常有效,但是由于不同类型的项目(WPF正在做一些奇怪的事情)具有不同的参考需求,它开始出现行为不端的情况,并且问题不容易追踪。我将我们的代码改为使用Cecil。接受Cecil的建议,因为这不会在我们的环境中引入依赖项。请注意,这里有龙!这对我们来说非常有效,但是由于不同类型的项目(WPF正在做一些奇怪的事情)具有不同的参考需求,它开始出现行为不端的情况,并且问题不容易追踪。我要把我们的代码改成使用塞西尔。