FileVersionInfo.GetVersionInfo()를 사용하여 좀 괴괴 망측하게되어 누군가가 도움을 줄 수 있기를 바랍니다.콘솔 응용 프로그램에서 FileVersionInfo.GetVersionInfo()가 올바르지 않습니다.
문제의 기본은 GetVersionInfo()를 호출하는 폴더의 모든 파일을 반복하는 것입니다. 약 300 개의 파일이 있습니다. 이것은 파일 2 개를 제외한 모든 파일에서 정상적으로 작동합니다. 이 DLL들에 대해서는 GetVersionInfo()에서 잘못된 정보를 얻고 있습니다.
다른 변수를 모두 없애기 위해이 호출을 간단한 테스트 응용 프로그램으로 추출했지만 여전히 동일한 문제가 있습니다. 그러나 테스트 응용 프로그램을 Windows 응용 프로그램 (초기에 콘솔 응용 프로그램)으로 만든 경우 데이터가 올바르게 반환되었습니다.
콘솔 앱으로 실행할 때 돌아 오는 잘못된 데이터는 파일에 버전 데이터가없는 경우 얻을 수있는 null 정보가 아닙니다. 합리적인 데이터가 포함되었지만 잘못된 데이터 만 포함되었습니다. 마치 다른 파일에서 읽는 것입니다. 일치하는 버전 데이터가있는 파일을 찾았지만 찾을 수 없습니다.
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));
}
}
}
문제를 나타내는 코드를 게시하는 방법에 대해 ... –
감사합니다. 미치가 추가되었습니다. 보시다시피, 특별한 일은하지 않습니다. 콘솔 응용 프로그램 또는 Windows 응용 프로그램으로 빌드 할 때 다른 결과가 나타납니다. (분명히 Windows 응용 프로그램으로 Console.WriteLine 작동하지 않지만 중단 점을 사용하여 결과를 볼 수 있습니다.) 난 단지 몇 가지 DLL에서 문제가 발생, 다른 모든 잘 작동합니다. DLL에 관해 특별한 것은 모르지만 회사의 다른 팀의 결과물입니다. VS2005/.NET 2.0을 사용하면 도움이됩니다. – Andy
참고 : ** 저는 VS2005/.NET 2.0을 사용하고 있습니다 **. 문제 DLL은 VS6.0입니다. C++ – Andy