Я получаю серьезную странность, используя FileVersionInfo.GetVersionInfo(), и надеялся, что кто-нибудь сможет помочь.
Суть проблемы в том, что я перебираю все файлы в папке, вызывая GetVersionInfo() для каждого. Там около 300 файлов. Это работает нормально для всех файлов, кроме двух. Для этих DLL я получаю полностью неправильную информацию от GetVersionInfo().
Чтобы исключить все другие переменные, я извлек этот вызов в простое тестовое приложение, и у него осталась та же проблема. Однако, если я создал тестовое приложение как приложение Windows (изначально это было консольное приложение), то данные вернулись правильно.
Просто чтобы уточнить, неправильные данные, возвращаемые при работе в качестве консольного приложения, — это не просто нулевая информация, которую вы получили бы, если бы файл не содержал данных о версии. Он содержал разумные данные, но просто неверные данные. Как будто из другого файла читает. Я искал файл, содержащий совпадающие данные о версии, но не смог его найти.
Почему этот простой вызов работает иначе, если он построен как консольное приложение, а не как приложение Windows?
Если кто-то может помочь с этим, я был бы очень благодарен.
С уважением, Энди
-- Добавлен код
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));
}
}
}