编辑: 目前我们使用SourceSafe进行源代码控制,是否有技术上的原因要尝试让我们切换到Subversion?
编辑#2: 看起来大家的共识是: Cruise Control.NET Subversion(如果我想停止使用SourceSafe) ASP.NET MVC NUnit进行单元测试 Resharper
针对您的源代码控制问题的回答...
从头重新设计一个应用程序可能是一个耗时的项目,如果您还没有确定要使用哪种源代码控制工具并且没有设置经验,那么不要浪费时间去更改它。
Visual SourceSafe可以胜任工作,特别是在一个人的努力下,而且它已经安装好了,所以可以直接使用。
我们使用的是Visual Studio 2008、Resharper 4.1、Subversion作为源代码控制工具、Cruise Control作为自动化构建工具以及内置单元测试工具进行所有自动化测试,同时使用Linq2Sql进行映射。你可以更换任何东西,但VS(显然)和resharper(太酷了)不能更换,但你可以轻松地使用其他源代码控制工具、映射器或单元测试工具。
以下是一些工具,可以使工作更加轻松和安全(在谷歌上搜索名称将会出现相关页面):
Subversion - 源代码控制
NUnit - 测试框架
CruiseControl.Net - 自动化构建
Visual Source Safe有严格的锁定策略,因此一次只能有一个人在文件上工作...而CVS或Subversion允许多个用户同时在同一文件上工作。
这里提出的所有建议都很好,但并没有什么万能的解决方案。您需要考虑应用程序的规模、用户数量、部署方式等因素,以做出架构、流程、工具集和其他决策。例如,TDD是一种好的方法论,但不是唯一的“正确做事”的方法论。另一个例子,CruiseControl非常棒,但在单个开发者项目中,可能过于复杂。
无论您选择什么方法,保持一致是我最好的建议 - 如果您选择了TDD,请坚持使用TDD。
我们像你一样重新编写了我们的网站,使用了C#和MVC。这很棒。我们使用微软的SourceSafe来控制我们的代码,它非常好用。由于你是唯一的开发者,这将取决于你喜欢什么。
微软的SourceSafe允许我们创建一个分支,我们可以在源代码控制下工作,并且可以轻松地在两者之间切换。(我并没有太多使用Subversion的经验,所以无法对其进行评论。)
我们使用NUnit来测试/模拟我们的代码。它非常容易模拟出来。我们创建了一个类来保存和读取对象。
保存函数: Stream stream = File.Open(simplePath, FileMode.OpenOrCreate); BinaryFormatter bwriter = new BinaryFormatter(); bwriter.Serialize(stream, actual);
读取函数: Stream stream = File.Open(simplePath, FileMode.Open, FileAccess.Read, FileShare.Read); BinaryFormatter bwriter = new BinaryFormatter(); object returnObject = bwriter.Deserialize(stream);
我们使用NUnit来模拟XML和SQL。
祝你好运!
如果你要从VSS背景开始设置一个全新的Subversion和持续集成实例,这两个免费的软件包可能会为你节省数天(或数周)的时间:
Visual SVN Server 设置了所有需要的Subversion服务器,包括Windows AD认证和管理员GUI。免费,你可以考虑支持他们出色的VisualSVN VS插件,以便在Visual Studio中进行源代码控制集成。或者,可以看看AnkhSVN
TeamCity 来自JetBrains(ReSharper的制造商,作为一种极好的工具而被提及)的持续集成软件包(CruiseControl.NET的替代品),专业版免费(最多20个用户和3个构建服务器)。
这两个软件包是最容易安装的软件之一,甚至比VSS本身还要简单 :-)
使用SVN可能需要一些调整;但是,无论你选择哪个客户端(AnkSVN、VisualSVN、TortoiseSVN或某些组合),都有出色的文档,你会没问题的。
此外,你知道在哪里可以找到那些渴望回答你问题并愿意以声望作为交换的人们。;-)如果你刚开始入门,我建议尽可能少更改(特别是你是唯一的开发人员),因此继续使用Sourcesafe。在你的情况下它完全没有问题。
后来,你可以考虑Microsoft Team System,或者选择其他第三方工具。
个人而言,我不喜欢Subversion,但我承认它在行业内是一种流行的工具。
至于TDD特定的软件,我无法提供任何建议。你有喜欢的UML工具或任何你正在使用的形式化方法吗?