【问题标题】:How can I track version numbers with ASP.NET MVC and WinForms?如何使用 ASP.NET MVC 和 WinForms 跟踪版本号?
【发布时间】:2010-06-24 22:24:33
【问题描述】:

我无法找到 .NET 框架中用于在构建时设置版本信息的内置机制。我们的开发工作主要针对使用 ClickOnce 部署的 WinForms 应用程序。为此,我们已经有一个系统就位并且正在运行。我想尝试扩展我们已经使用的一些 ASP.NET MVC 项目。

在我们的 CI 服务器开始构建我们的 WinForms 应用程序之前,我们打开 .csproj 文件并根据我们的 CC.NET 内部版本号和当前的 SVN 版本调整一些值。主要和次要版本号在配置文件中手动设置。

changeNodeValue('ApplicationVersion', version) // Version like "1.0.111.2222"
changeNodeValue('ApplicationRevision', revision) // SVN Revision like "2222"

所以,我们在共享库中有这样的东西。

if (ApplicationDeployment.IsNetworkDeployed)
    return ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
else
    return "development";

这在我们的 WinForms 应用程序中自然可以正常工作。从不是由 ClickOnce 部署的应用程序(我们的 Web 项目)调用此方法始终返回“开发”。

有没有一种方法可以为我们的 ASP.NET MVC 应用程序做同样的事情,即调整项目文件或构建参数以向 .NET 提供版本号?

【问题讨论】:

  • 据我所知 ApplicationDeployment 总是与单击一次(甚至类似的部署选项)有关。所以如果你没有用合适的机制部署你的应用程序,你最终会进入 else 分支(因为你的应用程序根本没有部署)。您可以尝试获取版本号,例如的执行程序集。 (by Assembly.GetExecutingAssembly().GetName().Version)另一方面,这需要执行程序集维护整个项目的版本号,因此可能不合适。
  • @Andreas 如果我改用GetCallingAssembly() 并且按照我的想法,这实际上是合适的。但是,我不知道如何设置程序集的版本。
  • B:您的项目中是否有一个名为 AssemblyInfo.cs 的文件(可能在 Properties 文件夹下)?如果是这样,您可以修改那里提供的信息。你甚至可以自动化这个过程。如果不是或一般介绍,请查看 System.Reflection.AssemblyVersionAttribute 以获取有关如何自己生成程序集版本信息的线索。还要注意相关课程,但请随时再次提问:-)

标签: .net continuous-integration versioning


【解决方案1】:

试试MSBuildVersioning DLL,它适用于我的 ASP .NET MVC 2 和 Winforms。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多