2011-05-11 117 views
6

我知道如何获取正在执行的应用程序或dll的版本。不过,我需要找到一个不执行的应用程序的属性。从非执行文件获取版本

我有一个小程序来为我的主应用程序设置文件关联。因为应用程序在启动时不接受参数,所以旧版本的用户没有意义。所以当文件关联器启动时,它首先检查它是否能找到主应用程序。如果可以,那么我想检查属性而不执行它。如果版本早于可以接受参数的版本,那么我想告诉用户更新,而不是继续设置关联。

我看过System.IO.FileInfo,但似乎没有包含任何版本信息。

感谢

+0

文件在Windows中没有版本信息。 – Hogan 2011-05-11 10:44:47

+2

@hogan很明显,.exe和.dll文件会将此信息存储在某处,因为您可以通过右键单击,选择“属性”然后选择“详细信息”来查看它。在那。 – dandan78 2011-05-11 10:46:20

+2

PE文件可以在Windows上有版本信息。它位于嵌入PE文件中的资源中。 – CodesInChaos 2011-05-11 10:46:32

回答

11

您可以使用FileVersionInfo.GetVersionInfo()

FileVersionInfo vi = FileVersionInfo.GetVersionInfo("myfile.dll"); 

串的showversion = vi.FileVersion;

//的showversion是实际的版本号

这将返回文件/文件元数据,并可以用于托管DLL甚至word文档以及

您还可以使用装配:

Version v = Assembly.ReflectionOnlyLoadFrom("myfile.dll").GetName().Version; 

这将遏制。 NET版本信息

+0

正是我需要的,所以简单! – ScruffyDuck 2011-05-11 10:52:26