我有一个CruiseControl.NET驱动的构建服务器和一个exec任务,在构建之前增加项目的程序集版本。我想知道,有没有办法(我不知道的CruiseControl.NET任务)将修改后的文件提交回SVN?
我需要它,所以当手动构建安装项目时(我使用的是msbuld,因此不会连续构建)所有构建文件在部署时都将具有正确的程序集版本。哦,如果有人知道如何建立设置和在没有安装Visual Studio的构建服务器上部署项目,我很想知道!
编辑:感谢Jonathan Stanton,现在更新正常运行,但是它会产生另一个问题......构建服务器现在循环(在更改时它会更新程序集版本并提交文件。这会导致onModify触发触发,以便更新程序集版本并提交文件...)。
我能做什么,不会循环?我可以添加更新SVN任务吗?这会有帮助吗?
答案 0 :(得分:2)
以下任务会将文件提交回源仓库。
<exec executable="svn.exe">
<buildArgs>commit -F <file you want to commit back> --username USER --password PASS --no-auth-cache --non-interactive --message 'CruiseControl.net build %CCNetLabel%'</buildArgs>
<buildTimeoutSeconds>10</buildTimeoutSeconds>
</exec>
以下链接可能有用:
我希望这有助于
乔纳森
修改强>
还有另一种方法可以做到这一点,即允许CC.NET在DLL中设置构建版本。有关如何在Damir's Corner进行的演练,名为Setting Up SVN and CC.NET for .NET Development
答案 1 :(得分:2)
有关如何cfg cc以避免构建周期的stackoverflow的另一个答案: How to checkin code during the build
答案 2 :(得分:0)
由于VS依赖,我放弃了设置和部署项目。
答案 3 :(得分:0)
在Jonathan在他的回答中链接的post on my blog中,我描述了我的设置,它在构建过程中没有做任何提交。我不是在构建期间增加构建号,而是使用Subversion中的修订号。我更喜欢这种方式,因为根据构建号,我可以轻松地检索用于构建构建的源。
在我的情况下,所有构建都是在CruiseControl.NET上完成的。在这种情况下,手动构建设置更加棘手,因为Subversion中的文件没有正确的内部版本号。您可以通过使用CruiseControl.NET构建中已修改的文件来解决此问题,并使用它们来构建您的设置。或者您也可以连续构建设置。
如果这对您不起作用,您应该采用DilbertDave建议的Filtered Source Control Block路径。只需将您的AssemblyInfo.cs文件(或您在构建过程中修改的任何其他文件)放在exclusionFilters中即可摆脱构建循环。