如何在文本框中显示发布版本?

时间:2013-07-17 03:03:37

标签: c#

目前我每次发布时都会在应用程序中手动更新版本字段(textbox)。我想知道是否有办法让我的应用程序从某个地方获取数据并将其显示在框中供我使用。我正在使用VS2012,我只是不确定如何在C#中实现这一点。下面是我正在讨论的VS2012属性窗口的屏幕截图。

Publish image from VS2012

新图片:

enter image description here

5 个答案:

答案 0 :(得分:23)

不要忘记检查应用程序是否是networkdeployed,否则它将无法在调试模式下工作。

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

答案 1 :(得分:15)

试试这个:

using System.Deployment.Application;

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

然后,getter属性的调用者可以取消引用MajorMinorBuildRevision属性,如下所示:

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

答案 2 :(得分:8)

我们也可以使用ToString

的重载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

答案 3 :(得分:2)

方法1: 你可以用这个

string version = Application.ProductVersion;

,并在文本框中显示版本

方法2: 或者,如果您需要版本的各个部分,则可以使用以下命令:

System.Version version2 = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

现在您拥有这些:

version2.Major;
version2.Minor;
version2.Revision;
version2.Build;

您可以像这样使用它们

string versionString= (String.Format("{0}.{1}.{2}.{3}", version2.Major, version2.Minor, version2.Revision, version2.Build));

答案 4 :(得分:0)

如果您收到ApplicationDeployment的错误,那么您可以尝试:

对于通过Program访问的全局版本,请在Program类中声明:

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

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

现在,程序中的任何地方都有Program.Version,您可以使用它来获取这样的版本信息:

LabelVersion.Text = String.Format("Version {0}.{1}",
    Program.Version.Major.ToString(),
    Program.Version.Minor.ToString());