如何从命令行从Visual Studio解决方案获取最新信息?
我如何像在Visual Studio的解决方案资源管理器上下文菜单中一样递归地获得最新版本的解决方案?我想从命令行或者通过宏来执行此操作。我正在尝试通过使用一组批处理文件来使我的日常工作自动化。我相信很多开发人员都会喜欢这样的东西。
tf get只递归地获取文件夹的内容(不是解决方案)。它不查看项目依赖项,依此类推。那行不通。
解决方案
回答
好吧...看来我们有三个选择。
- 在批处理文件中,在所需的每个目录分支上发出tf get。
- 重新组织解决方案,以便所有依赖项都在同一根路径下。
- 使用视觉方法,右键单击已加载的项目并发出get命令。
它唯一真正知道解决方案的时间是何时在IDE中加载项目。或者由构建服务器加载时。
回答
我知道我们提到了批处理文件,但让我为我们介绍一些其他内容。
我猜我们正在使用2005版的TFS。 2008年内置了所有调度程序。
但是,我们也可以使用CruiseControl.net为我们执行计划的构建。我使用了TFS 2008和CruiseControl,它们似乎都可以正常工作。
回答
TFS有一个.Net SDK,可让我们创建与TFS服务器交互的自定义程序。我们可以编写一个执行所需任务的小程序:
TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("MyServer"); VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); WorkSpace[] myWorkSpaces = vcs.QueryWorkSpaces("MyWorkSpaceName", "MyLoginName", "MyComputer"); myWorkSpaces[0].Get(VersionSpec.Latest, GetOptions.GetAll);
回答
另一种可能的解决方案是使用powershell。以下链接指向一个代码项目示例,该示例显示了如何从TFS获取解决方案并在本地构建它。 Powershell是比常规批处理文件更好的解决方案。
http://www.codeproject.com/KB/install/ExtractAndBuild.aspx
回答
不要这样VS并不像我们想象的那么聪明。 (每个人都经历了3个以上产品周期的神秘而徒劳的结帐证明了我们和我的参与。这并不是可靠系统的标志!)
我们描述的内容仅适用于项目间参考。从解决方案资源管理器中运行源代码控制操作将"根据设计"省略:
- 项目组装参考
- 视频,声音,PDF以及VS不支持但可能在产品中扮演不可或者缺角色的任何其他类型的媒体
- 项目中引用的MSBuild * .targets文件
- 从自定义目标引用的任何类型的任何文件
- 构建过程所需的任何第三方可执行文件
- 等等
对不完整的同步说不。沿着那条路,只有头痛。
从命令行运行无路径范围的'tf get',或者在Source Control Explorer中右键单击->从根$ /节点获取。
回答
我同意解决方案资源管理器将"按设计"忽略所有这些对象,但是仅当我们不将它们作为解决方案项目包括在内时,我认为我们应该将其包括在解决方案中,以便新手可以打开该解决方案并获取最新消息。 ,并且知道他们具有该解决方案所需的所有依赖关系,而不必通过命令行工具来学习如何做到这一点,或者在不需要时使用Source Control Explorer。
将所有非代码依赖性作为解决方案项包括在内(我们使用与源代码管理文件夹相同的文件夹结构来组织解决方案文件夹),可以减少为项目中的新开发人员打开和编译解决方案所需的"巫毒"知识。
如果可以将整个文件夹树链接到VS解决方案中的解决方案文件夹,那将是很好的。