에서 AssemblyInfo
이 어셈블리 버전이 :
AssemblyVersion
: 기여할 어셈블리의 버전을 지정합니다.AssemblyFileVersion
: Win32 파일 버전 리소스에 특정 버전 번호를 사용하도록 컴파일러에 지시합니다. Win32 파일 버전은 어셈블리의 버전 번호와 같을 필요는 없습니다.
Assembly Version
다음 코드 줄로 얻을 수 있습니다 .
Version version = Assembly.GetEntryAssembly().GetName().Version;
하지만 어떻게 얻을 수 Assembly File Version
있습니까?
답변
당신이 정말로 원하는 것에 대한 설명을 요구하는 위의 내 의견을 참조하십시오. 잘만되면 이것은 다음과 같습니다.
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.Diagnostics.FileVersionInfo fvi = System.Diagnostics.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;
답변
업데이트 : 내가 인용 한 게시물 @Iain 및 @Dmitry Lobanov 에서 Richard Grimes가 언급했듯이 내 대답은 이론적으로는 맞지만 실제로는 틀립니다.
셀 수없이 많은 책들에서 기억했듯이,를 사용하여 이러한 속성을 설정하는 동안 [assembly: XXXAttribute]
컴파일러에 의해 하이재킹되어 VERSIONINFO
리소스에 배치됩니다 .
위의 이유로 신호가 추출 된 후 속성이 제거되므로 @Xiaofu의 답변에 접근 방식을 사용해야 합니다.
공개 정적 문자열 GetProductVersion () { var attribute = (AssemblyVersionAttribute) 어셈블리 .GetExecutingAssembly () .GetCustomAttributes (typeof (AssemblyVersionAttribute), true) .단일(); 속성을 반환합니다. }
( http://bytes.com/groups/net/420417-assemblyversionattribute에서 -다른 속성을 찾고 있다면 위의 속성으로 대체하십시오)
답변
이것을 사용하십시오 :
((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
Assembly.GetExecutingAssembly(),
typeof(AssemblyFileVersionAttribute), false)
).Version;
아니면 이거:
new Version(System.Windows.Forms.Application.ProductVersion);