我是一名新手开发人员,想更好地学习软件开发过程。我的问题是:
- 什么是日常构建?
- 如果我在 VS 中构建自己的项目有什么区别?
- 我们如何以最佳方式为 .net 项目(最好使用 TFS)?
- 更多我应该/必须知道的事情?
欢迎对文章/书籍/其他问题的任何参考。
谢谢
我是一名新手开发人员,想更好地学习软件开发过程。我的问题是:
欢迎对文章/书籍/其他问题的任何参考。
谢谢
1)来自维基百科条目:
每日构建或夜间构建是每天对程序的最新版本进行软件构建的做法。这样可以首先对其进行编译以确保存在所有必需的依赖项,并且可能经过测试以显示没有引入任何错误。每日构建通常也是公开可用的,允许访问最新功能以获取反馈。
2) 夜间构建和 VS 构建之间应该没有区别,但是每日构建背后的想法是它是自动化的。这样你就可以安排它在凌晨 3 点运行 :)
运行验证步骤(例如,单元或功能测试)以验证最新版本中没有任何问题也是一个好主意。通过这样做,您可以保证构建编译并处于良好的工作状态。这样您就可以随意部署新的构建。
如果没有这样的流程,如果有人需要构建,您永远不会真正知道将它交付给他们可能需要多长时间。您可以在 VS 中轻松构建它,或者您可能必须修复部分代码才能构建它。当您的构建很大并且包含多个解决方案,每个解决方案都需要单独构建时,这将成为一个更大的问题。
3)您可以创建一个为您运行构建的批处理脚本,您可以为此目的使用一个工具。有关更多信息,请参阅:what-tool-to-use-for-automatic-nightly-builds。他们的一些建议包括:
乔尔的文章。很好读。
每日构建主要是自动构建,由中央服务器构建。构建自己的项目的不同之处在于,您了解应用程序中打包的所有 DLL、未在源代码管理中签入的代码、本地依赖项等。最终编译的应用程序和 DLL 与您在本地构建的相同。
我们使用Hudson进行夜间构建,但您也可以使用Cruise control.Net。因为我们做 Java & .NET Hudson 是最好的解决方案。如果你有 MS 的 Team Foundation 服务器,你也可以使用它。
请查看此内容以集成 Hudson 和 C#。
还可以考虑在您的构建服务器中集成 Stylecop、FXCop 和单元测试。
Martin Fowler 有一篇关于这个主题的优秀文章
http://martinfowler.com/articles/continuousIntegration.html
我个人不同意从您的开发环境构建源代码与进行夜间构建或每日构建相同。开发环境充斥着组件、SDK、库和资源,有时隐藏着松散的结局。在构建机器上进行夜间构建是最好的方法。
此外,从您自己的机器上进行构建可以防止日常签入主流代码。又是一个不好的做法。
每晚构建应该使用最少的构建工具和库。在构建机器上使用整个开发环境是一个坏主意。一个完整的构建也会有一些快速而肮脏的 - 浅层自动化测试,以便在代码编译、构建和部署到 test/pre-prod env 之后在代码上运行。NUnit、Selenium 和 FxCop 是你的朋友。
每日构建旨在确保您的应用程序每天至少有一次处于可构建状态。它们通常由自动化过程运行。许多团队更喜欢在每次签入存储库后准备持续集成构建。
自动化的日常流程具有自动化的优势 :) 您还可以将其设置为执行各种辅助任务:从运行单元测试到自动部署服务器组件。当你在你的开发机器上构建时,你要确保你的本地副本是有效的和可编译的,而 CI 服务器对你的存储库断言相同。
1) 每日构建是您的代码库和安装程序将经历的过程(包括测试、安装和可能的删除)的完整构建。
2)这是一个本地构建,应该没有真正的区别,除了你只会编译和测试代码而不一定是应用程序进程。
3)它还悬而未决,取决于预算、团队等。
4) Joel 之前发布的文章。
什么是日常构建?
“每日构建”是“持续集成”的一部分,意味着一个完整的项目是定期自动构建的。通常这种情况至少每天发生一次,如果可能的话甚至更频繁地发生,甚至可能在每次更改之后发生。
主要目标是确保项目始终可以构建;此外,各种测试可以作为构建的一部分运行,您可以自动部署到测试环境,生成安装程序以进行进一步测试等。
如果我在 VS 中构建自己的项目有什么区别?
它会自动发生,并使用默认配置。这可以确保项目始终正确构建,而不仅仅是在您的系统上(例如,因为您有一个特殊的配置,您忘记检查版本控制,或者您安装了特定的 IDE)。
我们如何为 .net 项目做到最好?
使用 CI(持续集成)服务器,例如CruiseControl.NET。有几种可用。