我有一个问题导致我的自动构建失败。
当我们打开最近从VS2005转换到VS2008 VS的解决方案时,通过ClearCase请求我们签出解决方案文件。
如果我们允许它,那么它无论如何都不做任何更改,默认情况下,ClearCase不喜欢没有更改的签入。所以我们撤消了结账 - 从那时起VS很高兴,它能够写出.suo文件。
如果我们取消读取保护解决方案文件,启动VS2008它会创建.suo文件ok,如果我们然后取消劫持.sln文件(无论如何都没有更改,因此VS2008没有注意到)并再次启动VS2008没关系 - 不要求结账。
在我的构建脚本中,我从视图中删除所有视图私有文件,然后使用强制取消劫持受控文件进行更新。然后我们构建部署项目(以及所有依赖项),并且当.suo文件被删除时,它每次都属于checkout .sln文件行为。
在构建服务器上,没有任何人看到对话框要求结帐,构建会挂起。
我可以更改(也就是bodge)构建脚本以不删除.suo文件,但我宁愿不这样做。
编辑:澄清 - .suo文件未被检入ClearClase - 它是由VS2008创建的视图专用文件,但是为了创建此文件,它想要检查.sln文件是不是真正的原因。 / p>
进一步编辑:
我找到了解决方案 - 我已根据此帖子的后续帖子禁用了整合。
答案 0 :(得分:4)
好的,我找到了问题的解决方案,实际上非常简单。
我在构建服务器上禁用了Visual Studio ClearCase集成。
正在使用VS,因为我们需要构建部署项目,所以我们称devenv为我们这样做。但是我们只将它用作构建引擎,构建引擎从不需要知道如何修改源项,因为它们都来自ClearCase。我们允许构建服务器修改的唯一项是AssemblyInfo文件中的程序集文件版本号属性,但是我们在NAnt中而不是在Visual Studio中这样做。
因此,禁用功能和问题就会消失。可能不是每个人的解决方案,而是在构建服务器上,这是前进的方向。
答案 1 :(得分:1)
答案 2 :(得分:0)
对于VS2008来说这似乎是正常的,它在打开解决方案时会检出.sln文件。我不喜欢它。
然而,您的问题是.suo文件也已签入。此文件不应置于源代码管理之下。它就像proj.user文件。我怀疑suo代表解决方案用户选项。
答案 3 :(得分:0)
你可以:
cleartool update -force -overwrite
”之后劫持快照视图中的sln文件。如果上述建议有效,那么有几个原因可以让人们想要将此文件保留在版本控制之下:
由于.suo file is disposable(VS2008只是创建一个新的,如果它不存在),在源代码控制下可能被视为避免创建的一种方法(因此避免ClearCase插件检测它和试图“添加源控制”或检查出来)。
在版本控制下使用.suo文件(但不通过任何进一步的结帐/签入更新)的另一个好处是when you are comparing您签出的项目与另一个已在其他地方下载的相同项目的签出版本:文件将始终相同,而不是系统地不同(因为如果是二进制文件,并且任何新版本的二进制文件将自身注册为不同的文件)