有没有人有战斗故事分享尝试使用Visual Studio开发Unix的应用程序?而且我不是在使用.NET,而是使用运行在下面的Mono或Wine虚拟平台.
我们公司有大约20名开发人员都在运行Windows XP/Vista,主要是为Linux和Solaris开发.直到最近,我们都以一种老式的方式登录了一个主Linux服务器并修改/构建了代码:Emacs,Vi,dtpad - 随你挑选.然后有人说,"嘿 - 我们生活在黑暗时代,我们应该使用IDE".
所以我们尝试了一些,并决定Visual Studio是唯一能满足我们性能需求的(是的,我确信IDE X是一个非常好的IDE,但我们选择了VS).
问题是,如何设置环境以使文件在本地可用于VS,但也可用于构建服务器?我们决定编写一个Visual Studio插件 - 每当我们点击"保存"时它就会在本地写入我们的文件和构建服务器,并且当我们的文件在服务器端发生变化时,我们可以推送一个"胖"同步按钮(当时我们从源代码管理服务器更新到最新文件.
该插件还使用Visual Studio的外部构建系统功能,最终只是ssh进入构建服务器并调用我们的本地"make"实用程序(Boost Build v2 - 具有很好的依赖性检查,但结果很慢,即30- 60秒开始).结果通过管道传送回Visual Studio,因此开发人员可以单击错误并转到相应的代码行(实际上非常流畅).构建服务器使用GCC并交叉编译所有Solaris构建.
但是即使在我们完成所有这些工作之后,每当我开始在Visual Studio中编写代码时,我都会忍不住感叹.我点击一个文件,开始输入,然后VS chugs赶上我.
还有什么比不得不停下来等待你的工具更烦人了吗?这些好处值得沮丧吗?
思想,故事,帮助?
VS chugs赶上我.
嗯......你的机器需要更多的记忆和咕噜声.从未遇到我的性能问题.
我有大约十年的经验,正是你提出的建议,其中大部分是在金融行业,为银行,证券交易所,股票经纪人的利基市场的客户开发实时系统.
在继续讨论之前,我需要承认所有这些都是在VS6 + CVS和最近的SVN中完成的.
源代码版本控制
开发人员拥有单独的sourcesafe存储库,以便他们可以存储他们的工作并在逻辑里程碑中检查它的工作包.当他们觉得他们想要进行集成测试时,我们会运行一个脚本,将其检入SVN.
一旦检入SVN,我们就会启动一个流程,该流程将自动生成相关的makefile,以便在目标机器上进行编译,以实现持续集成.
我们有另一组脚本可以将SVN中的新内容与VS所关注的文件夹同步.由于VS无法自动获取新文件,因此存在一些差距; 我们通常手动处理.这只发生在项目的前几天.
这是我们如何维护代码的概述.我不得不说,我可能已经掩盖了一些细节(如果你有兴趣,请告诉我).
编码
从编码方面来说,我们在很大程度上依赖于预处理器(即#define等)和makefile中的标志来形成编译过程.对于跨平台可移植性,我们使用GCC.有几次,我们强行在HP-UX和其他一些编译器上使用aCC,但我们并没有太多的悲痛.唯一不变的是,我们必须注意跨平台的线程堆空间.编译器并没有让我们失去理智.
为什么?
问题通常是,"为什么你甚至会想要拥有如此复杂的发展方式?".我们的答案通常是另一个问题,"你有没有想过通过检查核心转储或使用gdb来调试多线程应用程序是多么疯狂?".基本上,当您调试一个模糊的bug时,我们可以跟踪/逐步执行每行代码,这一切都值得付出努力!
另外!... VS的intellisense功能使得查找属于类的方法/属性变得如此容易.我还听说VS2008具有重构功能.我已将注意力转移到具有这两种功能的Eclipse上的Java.你可以更有效地专注于编写业务逻辑而不是投入精力让你的思维像记住一样!
也!...我们最终得到的产品可以在Windows和Linux上运行!
祝好运!