如何在.NET应用程序中获取当前发布的版本?

Ed *_*ber 34 .net c#

我希望能够显示我使用发布向导部署的.NET应用程序的当前版本.每次发布应用程序时都有一个很好的选项可以自动更新版本号.

我找到了另一个问题(自动更新版本号),以获取当前版本:

Assembly.GetExecutingAssembly().GetName().Version
Run Code Online (Sandbox Code Playgroud)

这将获取您在项目属性中设置的版本,但不会获取每次发布时自动递增的版本.

Jas*_*son 51

您可以使用以下测试

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) {
    return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
}
Run Code Online (Sandbox Code Playgroud)

避免例外(详见本文).

此外,我认为你不能通过Visual Studio调试获得当前的发布版本,因为访问CurrentDeployment将抛出一个InvalidDeploymentException.

  • 我更喜欢这种方法而不是接受的答案.接受的答案没有区分它正在处理哪个例外.制作彻底的异常处理程序通常是不好的做法. (3认同)

Ed *_*ber 45

我最终使用这一小段代码来获取当前部署的版本,或者它是否未部署当前的程序集版本.

private Version GetRunningVersion()
{
  try
  {
    return Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
  }
  catch
  {
    return Assembly.GetExecutingAssembly().GetName().Version;
  }
}
Run Code Online (Sandbox Code Playgroud)

我不得不添加对System.Deployment和的引用System.Reflection.

  • 你不必使用那个hackish try/catch块.您可以检查您的应用程序是否已部署"ApplicationDeployment.IsNetworkDeployed" (5认同)