your programing

어셈블리 파일 버전을 어떻게 얻을 수 있습니까?

lovepro 2020. 9. 30. 11:10
반응형

어셈블리 파일 버전을 어떻게 얻을 수 있습니까?


에서 AssemblyInfo이 어셈블리 버전이 :

  1. AssemblyVersion: 어트 리뷰 션되는 어셈블리의 버전을 지정합니다.
  2. AssemblyFileVersion: Win32 파일 버전 리소스에 특정 버전 번호를 사용하도록 컴파일러에 지시합니다. Win32 파일 버전은 어셈블리의 버전 번호와 같을 필요가 없습니다.

Assembly Version다음 코드 줄로 얻을 수 있습니다 .

Version version = Assembly.GetEntryAssembly().GetName().Version;

하지만 어떻게 얻을 수 Assembly File Version있습니까?


당신이 정말로 원하는 것에 대한 설명을 요청하는 위의 내 의견을 참조하십시오. 바라건대 이것은 다음과 같습니다.

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;

가 있습니다 세 가지 버전 : 조립 , 파일제품 . 다른 기능에서 사용되며 명시 적으로 지정하지 않으면 다른 기본값을 사용합니다.

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
string assemblyVersion = Assembly.LoadFile("your assembly file").GetName().Version.ToString(); 
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; 
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;

응용 프로그램 파일 버전 (어셈블리 정보-> 파일 버전에 설정된 내용)에 액세스하려면 양식로드시 레이블의 텍스트를 설정하여 버전을 표시하려면 방금 사용했습니다.

versionlabel.Text = "Version " + Application.ProductVersion;

업데이트 : Richard Grimes가 인용 한 게시물 @Iain 및 @Dmitry Lobanov 에서 언급했듯이 내 대답은 이론적으로 옳지 만 실제로는 잘못되었습니다.

수많은 책 등에서 기억해야했던 [assembly: XXXAttribute]것처럼를 사용하여 이러한 속성을 설정하는 동안 컴파일러에 의해 하이재킹되어 VERSIONINFO리소스에 배치됩니다 .

위의 이유로 신호가 추출 된 후 속성이 제거되므로 @Xiaofu의 답변 에서 접근 방식을 사용해야 합니다.


공용 정적 문자열 GetProductVersion ()
{
  var 속성 = (AssemblyVersionAttribute) Assembly
    .GetExecutingAssembly ()
    .GetCustomAttributes (typeof (AssemblyVersionAttribute), true)
    .단일();
   return attribute.InformationalVersion;
}

( http://bytes.com/groups/net/420417-assemblyversionattribute에서 -거기에 언급 된대로, 다른 속성을 찾고 있다면 위의 속성으로 대체하십시오)


이것을 사용하십시오 :

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

아니면 이거:

new Version(System.Windows.Forms.Application.ProductVersion);

참고 URL : https://stackoverflow.com/questions/909555/how-can-i-get-the-assembly-file-version

반응형