FileVersionInfo.GetVersionInfo()を使用して深刻な問題が発生し、誰かが助けてくれることを期待していました。
この問題の基本は、それぞれのGetVersionInfo()を呼び出すフォルダー内のすべてのファイルを反復処理していることです。約300個のファイルがあります。これは、2つを除くすべてのファイルで問題なく機能します。これらのDLLの場合、GetVersionInfo()から完全に誤った情報が返されます。
他のすべての変数を排除するために、この呼び出しを単純なテストアプリに抽出しましたが、それでも同じ問題が発生しました。ただし、テストアプリをWindowsアプリケーション(最初はコンソールアプリケーション)としてビルドした場合、データは正しく返されました。
明確にするために、コンソールアプリとして実行しているときに返される誤ったデータは、ファイルにバージョンデータが含まれていない場合に得られるような単なるnull情報ではありません。妥当なデータが含まれていましたが、間違ったデータが含まれていました。別のファイルから読み取っているようなものです。一致するバージョンデータを含むファイルを探しましたが、見つかりません。
Windowsアプリケーションではなくコンソールアプリケーションとして構築された場合、この単純な呼び出しの機能が異なるのはなぜですか?
誰かがこれを手伝ってくれるなら、私はとても感謝しています。
Rgds、Andy
-追加されたコード
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));
}
}
}