2009-11-04 42 views

回答

2

我使用这个MSBuild Task来自动递增我的内部版本号 - 需要在* .csproj或* .vbproj文件中进行一些手动修改,但它的工作原理非常完美,而且非常灵活。

+0

我认为这是针对我需要的更好的东西,它需要我一些时间来测试它,但它看起来不错!谢谢 ! – Dani 2009-11-04 15:39:29

+0

这是一个小问题,我使用一个svn受控环境,如果我不检查它们,它会锁定这些文件。 使用此解决方案使我锁定assembly.cs为了构建。 我想有没有办法避免这个...但它需要的解决方案的乐趣... – Dani 2009-11-05 11:01:06

1

Visual Studio中有一个内置的mecanism为:

AssemblyInfo.cs,通过这一更改设置:

[assembly: AssemblyVersion("1.0.*")] 

星号标志指示Visual Studio来对各建一个版本1.0分配。 ds,其中d是自2000年2月1日以来的天数,s是自午夜/ 2以来的秒数。

编辑:

看看这个网页:http://www.codeproject.com/KB/dotnet/ManagingAssemblyVersions.aspx没有对多信息:如何管理的版本号。

+0

10倍,我怎么能分出哪个是当前数/有一个“SID” - 这意味着 - 如果项目在数量上是55,我想它从56自动启动? (或从magor版本号更改后从零开始) – Dani 2009-11-04 15:19:58

+0

我试过在该字段中使用*,但ide不允许。 – Dani 2009-11-04 15:21:11

+0

如果我没有记错,第一个生成的数字将在日期的函数中生成,第二个生成的数字将生成。 所以你会得到像1.0.4245.51002 – Matthieu 2009-11-04 15:25:27

0

IIRC在您的解决方案资源管理器中,单击“显示所有文件”,我相信它是靠近窗口顶部的第三个文件。

(双击)“我的项目”。

接下来,在“AssemblyInfo.vb的”

在代码编辑器中双击,直到你已经达到底部向下滚动。

注释掉

更换

<Assembly: AssemblyVersion("1.0.0.0")> 

<Assembly: AssemblyVersion("1.*.0")> 

点击 '保存'。

然后你就完成了!

+2

是的,但是这并不能很好地推进内部编号 - 它只是抓住当前时间和日期并将它粘在那里,所以你的内部编号看起来像1.0。 21643.23849等等...... – 2009-11-04 15:27:13

+0

谢谢你,生病说一声。我记得我的一位同事曾经提过一次。 – CaRDiaK 2009-11-04 15:58:12

0

一个灵活的选择是创建一个带有版本编号方案的T4模板,并引用Visual Studio从其生成的.cs文件。这样的模板的一个例子:

<#@ template language =“C#”#> // //此代码是由工具生成的。手动进行的任何更改将丢失 //下次重新生成此代码。 //

using System.Reflection;

[组件:的AssemblyVersion( “1.0.1 <#= this.RevisionNumber#>。”)] [组件:的AssemblyFileVersion( “1.0.1 <#= this.RevisionNumber#>”)] <# + int RevisionNumber =(int)(DateTime.UtcNow - new DateTime(2010,1,1))。TotalDays;

>

在这个例子中的版本号从1月1日,2010年被设置为天数,但可以提供任何自定义编号方案,因为它是纯C#。

我写了一个blog post这也解释了更详细此技术:

+0

谢谢,我会检查你的博客,了解这种技术。 – Dani 2010-04-26 07:02:35