Zac*_*son 91 .net svn versioning asp.net
Stack Overflow底部有一个subversion版本号:
svn修订版:679
我想在我的.NET Web Site/Application
Windows窗体,WPD项目/解决方案中使用这种自动版本控制.
我该如何实现?
sai*_*eon 30
看起来Jeff正在使用CruiseControl.NET基于一些翻阅播客的成绩单.这似乎具有从源代码控制到生产的自动部署功能.这可能是插入发生的地方吗?
Bra*_*son 26
我们使用xUnit.net进行自动构建.我们使用CruiseControl.net
(并正在尝试TeamCity).我们为持续集成运行的MSBuild任务会自动更改我们的内部版本号,因此生成的构建ZIP文件包含一组正确版本的DLL和EXE.
我们的MSBuild文件包含一个用于执行正则表达式替换的DLL的UsingTask引用:(欢迎使用此DLL,因为它也包含在MS-PL许可证中)
<UsingTask AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll" TaskName="CodePlex.MSBuildTasks.RegexReplace"/>
接下来,我们提取构建号,它由CI系统自动提供.如果需要,您还可以让源控制提供程序提供源修订号,但我们发现CI系统中的构建#更有用,因为不仅可以通过CI构建号查看集成结果,还可以提供链接回构建中包含的变更集.
<!-- Cascading attempts to find a build number --> <PropertyGroup Condition="'$(BuildNumber)' == ''"> <BuildNumber>$(BUILD_NUMBER)</BuildNumber> </PropertyGroup> <PropertyGroup Condition="'$(BuildNumber)' == ''"> <BuildNumber>$(ccnetlabel)</BuildNumber> </PropertyGroup> <PropertyGroup Condition="'$(BuildNumber)' == ''"> <BuildNumber>0</BuildNumber> </PropertyGroup>
(我们尝试来自TeamCity的BUILD_NUMBER,然后来自CC.net的ccnetlabel,如果两者都不存在,我们默认为0,这样我们就可以手动测试自动构建脚本.)
接下来,我们有一个任务将构建号设置为一个GlobalAssemblyInfo.cs文件,我们链接到所有项目中:
<Target Name="SetVersionNumber"> <RegexReplace Pattern='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)' Replacement='AssemblyVersion("$1.$(BuildNumber)")' Files='GlobalAssemblyInfo.cs'/> <Exec Command="attrib -r xunit.installer\App.manifest"/> </Target>
这将找到AssemblyVersion属性,并用abcBuildNumber替换abcd版本号.我们通常会将源检查到树中,并且构建器编号的前三部分是固定的,第四部分是零(fe,今天它是1.0.2.0).
在构建过程中,确保SetVersionNumber任务在构建任务之前.最后,我们使用Zip任务压缩构建结果,以便我们拥有每个自动构建的二进制文件的历史记录.
Nic*_*rdi 24
您可以在代码中的任何位置添加以下内容
$Id:$
Run Code Online (Sandbox Code Playgroud)
所以例如@Jeff做了:
<div id="svnrevision">svn revision: $Id:$</div>
Run Code Online (Sandbox Code Playgroud)
当在服务器中检查时,用当前版本号替换$ Id:$.我也找到了这个参考.
还有$ Date:$,$ Rev:$,$ Revision:$
And*_*rew 17
如果您正在使用ASP.Net MVC
(如StackOverflow那样),我已经编写了一个易于遵循的三步指南,介绍如何自动获取和显示最新的SVN版本.该指南的灵感来自于对这个问题的思考!:O)
$rev
和其他类似的是各个文件的修订版,因此除非文件发生变化,否则它们不会更改.网页上的数字(很可能是我在这里假设的)整个项目的svn修订版号.这与其他人指出的文件修订版不同.
在这种情况下,我假设CCNET正在提取项目的修订号,并用该号码重写网页的一部分.任何CI解决方案都应该能够做到这一点,使用CCNET和Teamcity自己设置它(虽然不是网页,但是部署/汇编版本的自动版本化).
为了让您这样做,请使用支持它的CI解决方案,或使用您的构建过程(MSbuild/Nant)来存储该版本,并在"部署"它之前将其写入文件.
归档时间: |
|
查看次数: |
8095 次 |
最近记录: |