显然没有任何原因,每次我打开我的解决方案时,Visual Studio 都会检查 sln 文件。
如果我将它与以前的版本进行比较,则没有任何变化。但这真的很令人沮丧,因为每个人都检查了解决方案。
我正在使用 VS 2008 和 TFS 2008,都是 SP2。
关于如何阻止这件事发生的任何想法?或者是 VS 的 TFS 源代码控制提供程序的功能/错误?
当 .sln 文件中有以下内容时会发生这种情况:
GlobalSection(ExtensibilityGlobals) = postSolution
MyGlobalProperty = AnyValue
EndGlobalSection
我发现Enterprise Library添加了其中一个。我删除它,签入解决方案,关闭然后重新打开它,不再自动签出。
根据记忆,如果您使用工具、选项菜单并选择源代码管理、环境面板,应该有一些选项用于配置IDE与版本控制的接口方式。
我认为其中一些选项控制着 checkout on open 行为。
以防万一,像我一样,你无法让它工作,你发现一个或多个项目也被签出,我找到了一个更简单的解决方案。记下它不断检查的项目。转到文件 - 源代码管理 - 更改源代码管理,然后取消绑定有问题的项目。单击“确定”、“全部保存”,然后返回“更改源代码管理”并将项目绑定回解决方案。希望这对其他人有用
虽然一开始并没有阻止这个问题,但自由使用 Team Foundation Power Tools“Undo Unchanged”命令将(令人惊讶的是)撤消未完成的编辑,如果没有进行任何更改。
允许签出然后比较两个文件。 如果 VS 添加类似的东西
<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
你在 VS2008 中遇到了一个 VS 错误,但没有移植到 VS2005
查看此链接了解更多详情:
Visual Studio 解决方案文件正在通过使用 Microsoft 企业库的一个或多个解决方案项目静默签出 - 我相信这与企业库配置实用程序有关,它允许对各种应用程序块进行配置管理 - http://msdn.microsoft.com/en-us/library/ff649479.aspx
请参阅此 Microsoft 反馈帖子:http://connect.microsoft.com/VisualStudio/feedback/details/737184/globalsection-extensibilityglobals-postsolution-checks-out-sln-file-on-open
这是在解决方案中加载的项目系统之一的功能/错误。尝试删除各种类型的项目(C#、VB、C++、网站、Web 应用程序、单元测试、silverlight...)直到它消失;这就是你的答案。
你在做比较之前保存你的文件吗?前段时间发生在我身上,一直说文件之间没有变化,但过了一段时间我意识到我之前没有保存文件,而是与磁盘中的版本进行比较,而不是内存中的版本。
每次您在 Visual Studio 中打开某个解决方案时,它都会执行一些操作,这些操作可能会导致您的 .sln 或项目文件发生更改,然后它会要求您检出文件。当开发人员计算机中的文件夹结构发生变化,或者他们没有所有文件的相同版本时,就会发生这种情况。也许有人在某个文件夹中添加了一个项目,而另一个开发人员在另一个地方有相同的项目。 我看到这种情况发生的另一种情况是,当我们有一些 c++ 项目的解决方案时,出于某种原因,其中一个 c++ 项目有一个带有绝对路径的 .res 文件。一旦这个文件由 VS 自动生成,它就会在开发机器之间保持变化。
我建议您打开 .sln 文件并查找一些绝对路径或相对路径,这些路径在某些开发人员机器中可能不存在,具体取决于他们从您的源代码管理中获取的文件。