我使用FileVersionInfo.GetVersionInfo()得到了一些严重的奇怪,并希望有人能够帮助。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));
}
}
}
如何张贴展示问题的简化代码... – 2010-02-08 12:52:02
感谢米奇,现在添加。正如你所看到的,它没有做任何特别的事情。当它构建为控制台应用程序或Windows应用程序时,我会得到不同的结果。 (显然作为一个Windows应用程序Console.WriteLine不起作用,但我可以看到带有断点的结果。) 我只在一些DLL上遇到问题,其他一切正常。我不知道DLL的任何特殊之处,它们是公司中另一个团队的输出。 如果有帮助,请使用VS2005/.NET 2.0。 – Andy 2010-02-08 13:35:31
注意:**我是**使用VS2005/.NET 2.0。问题DLL是VS6.0 C++ – Andy 2010-02-08 15:20:56