如何使用ASP.NET MVC和WinForms跟踪版本号?

如何使用ASP.NET MVC和WinForms跟踪版本号?,.net,continuous-integration,versioning,.net,Continuous Integration,Versioning,我很难找到.NET framework中用于在生成时设置版本信息的内置机制。我们的开发工作主要针对使用ClickOnce部署的WinForms应用程序。为此,我们已经有了一个系统,并且正在运行。我想尝试用一些ASP.NET MVC项目来扩展我们已经拥有的功能 在CI服务器开始构建WinForms应用程序之前,我们打开.csproj文件,并根据CC.NET构建编号和当前SVN版本调整一些值。主要版本号和次要版本号在配置文件中手动设置 changeNodeValue('ApplicationVers

我很难找到.NET framework中用于在生成时设置版本信息的内置机制。我们的开发工作主要针对使用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提供版本号?

尝试一下DLL,对于我来说,ASP.NET MVC 2和Winforms非常有效。

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