5

我有一个小问题导致我的自动构建失败。

当我们通过 ClearCase 请求打开最近从 VS2005 转换为 VS2008 VS 的解决方案时,我们检查解决方案文件。

如果我们允许它,那么它无论如何都不做任何更改,并且默认情况下,ClearCase 不喜欢没有更改的签入。所以我们撤消了结帐——从那时起 VS 很高兴,它能够写入 .suo 文件。

如果我们取消读取保护解决方案文件,启动 VS2008 它会创建 .suo 文件,如果我们然后取消劫持 .sln 文件(无论如何都没有更改,因此 VS2008 不会注意到)并再次启动 VS2008 就可以了 -不要求结帐。

在我的构建脚本中,我从视图中删除所有视图私有文件,然后通过强制取消劫持受控文件进行更新。然后我们构建部署项目(以及所有依赖项),并且随着 .suo 文件被删除,它每次都落入检出 .sln 文件的行为中。

在构建服务器上,周围没有人看到要求结帐的对话框,构建挂起。

我可以更改(又名 bodge)构建脚本以不删除 .suo 文件,但我宁愿不这样做。

编辑:澄清 - .suo 文件未检入 ClearClase - 它是由 VS2008 创建的视图私有文件,但是要创建此文件,它想签出 .sln 文件,但并非真正原因。

进一步编辑:

我已经找到了解决方案 - 根据我在此线程上的后续帖子,我已禁用集成。

4

4 回答 4

4

好的,我找到了问题的解决方案,实际上很简单。

我在构建服务器上禁用了 Visual Studio ClearCase 集成。

由于我们需要构建部署项目,因此正在使用 VS,因此我们调用 devenv 为我们执行此操作。然而,我们只是将它用作构建引擎,构建引擎永远不需要知道如何修改源项目,因为它们都刚刚来自 ClearCase。我们允许构建服务器修改的唯一项目是 AssemblyInfo 文件中的程序集文件版本号属性,但我们在 NAnt 中而不是在 Visual Studio 中这样做。

因此,禁用该功能,问题就会消失。可能不是每个人的解决方案,但在构建服务器上它是前进的方向。

于 2009-03-11T11:41:34.330 回答
1

这个故障排除项目让我找到了这个修复包,它解决了我们开发环境中的问题。我们仍在使用 VS2005,但我希望这与 VS2008 中出现的问题相同。

于 2009-07-23T15:06:54.503 回答
0

这对于 VS2008 来说似乎是正常的,它在打开解决方案时会检查 .sln 文件。我也不喜欢。

但是,您的问题是 .suo 文件也已签入。此文件不应置于源代码管理之下。它就像 proj.user 文件。我怀疑 suo 代表解决方案用户选项。

于 2009-03-09T11:22:28.417 回答
0

你可以:

  • 更新您的脚本,以便在您的“ cleartool update -force -overwrite”之后劫持快照视图中的 sln 文件。
  • 或者,为了避免签出 sln,您可以尝试保持.suo 文件签入,

如果上述建议有效,那么以下是人们希望将此文件置于版本控制之下的几个原因:

  • 由于.suo 文件是一次性的(如果不存在,VS2008 只会创建一个新文件),在源代码控制下可能被视为一种避免创建的方法(因此避免 ClearCase 插件检测到它并尝试“添加到源代码”控制”它或检查它)。

  • 将 .suo 文件置于版本控制之下(但不通过任何进一步的签出/签入进行更新)的另一个优点是,当您将签出的项目与在其他地方下载的同一项目的另一个签出版本进行比较时:该文件将始终相同,因为反对系统不同(因为如果是二进制文件,并且二进制文件的任何新版本都会将自己注册为不同的)

于 2009-03-09T11:28:23.193 回答