我在使用 FileVersionInfo.GetVersionInfo() 时遇到了一些严重的怪异现象,希望有人能提供帮助。
问题的基础是我正在遍历一个文件夹中的所有文件,每个文件都调用 GetVersionInfo()。大约有300个文件。这适用于除 2 个文件之外的所有文件。对于这些 DLL,我从 GetVersionInfo() 返回的信息完全不正确。
为了消除所有其他变量,我将此调用提取到一个简单的测试应用程序中,它仍然遇到同样的问题。但是,如果我将测试应用程序构建为 Windows 应用程序(最初是控制台应用程序),那么数据就会正确返回。
澄清一下,作为控制台应用程序运行时返回的不正确数据不仅仅是文件不包含版本数据时所获得的空信息。它包含合理的数据,但只是错误的数据。就好像它正在从不同的文件中读取它一样。我寻找了一个包含匹配版本数据的文件,但找不到。
如果构建为控制台应用程序而不是 Windows 应用程序,为什么这个简单的调用会以不同的方式运行?
如果有人可以提供帮助,我将不胜感激。
Rgds,安迪
-- 添加代码
using System;
using System.Diagnostics;
namespace test
{
class Program
{
static void Main(string[] args)
{
string file = "C:\\ProblemFile.dll";
FileVersionInfo version = FileVersionInfo.GetVersionInfo(file);
string fileName = version.FileName;
string fileVersion = version.FileVersion;
Console.WriteLine(string.Format("{0} : {1}", fileName, fileVersion));
}
}
}