2013-07-17 35 views
22

Xin chào mọi người,cách hiển thị phiên bản xuất bản trong hộp văn bản?

một câu hỏi thú vị khác. Tại thời điểm này, tôi tự cập nhật trường phiên bản (hộp văn bản) trong ứng dụng của mình mỗi khi tôi xuất bản nó. Tôi tự hỏi nếu có một cách để có ứng dụng của tôi có được dữ liệu đó từ đâu đó và hiển thị nó trong hộp cho tôi. Tôi đang sử dụng VS2012 và tôi chỉ không chắc chắn làm thế nào để đạt được điều đó trong C#. Dưới đây là một ảnh chụp màn hình của cửa sổ thuộc tính VS2012 mà tôi đang nói đến.

Publish image from VS2012

NEW IMAGE:

enter image description here

Trả lời

11

Đừng quên kiểm tra xem ứng dụng được networkdeployed nếu không nó sẽ không làm việc trong chế độ gỡ lỗi.

if (ApplicationDeployment.IsNetworkDeployed) 
{ 
    this.Text = string.Format("Your application name - v{0}", ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString(4)); 
} 
+0

'IsNetworkDeployed' trả về false .. vấn đề có thể là gì? – jackjop

+1

Khi bạn đang chạy phiên bản gỡ lỗi theo IDE, sau đó theo định nghĩa bạn sẽ không được triển khai mạng và 'ApplicationDeployment.CurrentDeployment.CurrentVersion' sẽ ném' System.Deployment.Application.InvalidDeploymentException', đó là lý do tại sao bạn phải kiểm tra ' IsNetworkDeployed'. Để kiểm tra xem điều này có đang hoạt động hay không, hãy xuất bản nó lên mạng và sau đó triển khai nó! Ngoài ra, bạn có thể thử 'Application.ProductVersion' theo câu trả lời từ @Christos Lytras. – woodvi

15

Hãy thử điều này:

using System.Deployment.Application; 

public Version AssemblyVersion 
{ 
    get 
    { 
     return ApplicationDeployment.CurrentDeployment.CurrentVersion; 
    } 
} 

Sau đó, người gọi đến tài sản getter có thể de-tham chiếu Major, Minor, BuildRevision tài sản, như sau:

YourVersionTextBox.Text = AssemblyVersion.Major.ToString() + "." + AssemblyVersion.Minor.ToString() + "." + AssemblyVersion.Build.ToString() + "." + AssemblyVersion.Revision.ToString(); 
+0

Tôi đã thử đề xuất của bạn, tuy nhiên trong khối thử, ứng dụng đang gặp phải lỗi "system.windows.forms.application không chứa định nghĩa cho việc đăng ký ứng dụng" ngay cả sau khi bao gồm phần "sử dụng" –

+2

Bạn có tham chiếu đến 'System.Deployment.dll' trong dự án Windows Forms của bạn? –

+0

Tôi thực sự, mà tôi thấy khó hiểu rằng nó có vấn đề với nó để bắt đầu. –

7

Ngoài ra chúng tôi có thể sử dụng quá tải ToString của System.Version

using System.Deployment.Application; 

public Version AssemblyVersion 
{ 
    get 
    { 
     return ApplicationDeployment.CurrentDeployment.CurrentVersion; 
    } 
} 


YourVersionTextBox.Text = AssemblyVersion.ToString(1); // 1 - get only major 
YourVersionTextBox.Text = AssemblyVersion.ToString(2); // 1.0 - get only major, minor 
YourVersionTextBox.Text = AssemblyVersion.ToString(3); // 1.0.3 - get only major, minor, build 
YourVersionTextBox.Text = AssemblyVersion.ToString(4); // 1.0.3.4 - get only major, minor, build, revision 
0

Nếu bạn nhận được một lỗi của ApplicationDeployment, sau đó bạn có thể thử này:

Đối với phiên bản toàn cầu truy cập thông qua Program, kê khai bên Program lớp:

private static Version version = new Version(Application.ProductVersion); 

public static Version Version 
{ 
    get 
    { 
     return version; 
    } 
} 

Bây giờ bạn có Program.Version bất cứ nơi nào có sẵn trong chương trình và bạn có thể sử dụng nó để nhận thông tin phiên bản như sau:

LabelVersion.Text = String.Format("Version {0}.{1}", 
    Program.Version.Major.ToString(), 
    Program.Version.Minor.ToString()); 
Các vấn đề liên quan