Visual Studio 2010和TFS不必要的签出

5
我正在使用带有Team Foundation Server 2010的Visual Studio 2010 SP1。每当我打开一个项目时,Visual Studio会自动检查项目文件(.csproj)和相应的.csproj.vspscc文件(但不包括任何子文件)。每当我比较挂起更改列表中的项目文件时,它会显示.csproj文件和.csproj.vspscc文件是相同的--我们只需将它们检入或撤消更改即可。
请问为什么会这样做以及如何解决它,使它每次打开项目时都不需要检出.csproj和.vspscc文件呢?

我讨厌集成的源代码控制。 - Steve Wellens
由于某些我不知道的原因,vs2010通常会将解决方案/项目配置中的所有更改保存在内存中,并且不会将它们保存到磁盘上,除非您明确要求通过触发“全部保存”或关闭项目来执行此操作。因此,很容易想象当您从源代码控制更新并且失去了所有内存中的更改时所处的情况。也许这种行为需要提前检出项目文件。这只是基于使用vs2010的个人观点。 - Akim
5个回答

2
我们团队也遇到过同样的问题。问题在于项目的一个引用指向了我们团队成员工作区中不同(错误)的目录。 Pantelif 的解决方案朝着正确的方向,但是使用 TFS 比较 csproj 文件并不会有帮助。因为无论什么原因,它都会说这些文件是相同的,但是如果我手动查看它们,我就会发现它们并不相同。 您可以轻松地检查这一点:

  • 右键单击项目
  • 选择“卸载项目”
  • 再次右键单击
  • 选择“编辑 xxx.csproj”

现在深入研究“ProjectReference”标记。在我的情况下,“Include”属性不相同。 希望这也能帮到您。

为了避免这种问题,只需查看TFSGuide,特别是第3章。


1
我可以回答这个问题的一部分。为什么文件显示相同?
原因是当它自动检出文件并进行更改时,它没有保存此更改。因此,如果您立即比较文件,它会发现没有差异。如果您构建项目或手动调用对这些修改后的文件进行保存,则更改将显示出来。

0

我的解决方案以前也遇到了同样的问题,后来我发现,在我本地配置的IIS中有不同的VD名称,而在TFS服务器上,分配了不同的VD名称并进行了检查。因此,当我打开我的解决方案时,它会自动检出.sln文件,因为我的本地VD映射到我的本地是不同的。


0

目前不清楚您采取了什么步骤来导致问题的发生,但我理解您的意思是指当您打开一个解决方案时,该解决方案中的所有项目文件都被自动检出。

这不是正常行为,因此您可能有第三方工具正在对您的项目文件执行操作;也许它会编辑它们,然后以相同的方式放回。请检查并禁用任何插件(工具菜单->插件管理器),您还可以使用扩展程序管理器(也在工具菜单中)检查您安装了哪些其他扩展程序。


当我进行比较时,它显示文件是相同的。这就是为什么我感到困惑的原因。 - Sean
@Sean 可能有超过1个文件组成在VS中出现的“项目”。您是否将任何“用户”配置文件签入源代码控制(例如*.csproj.user,*.suo或*.csproj.webinfo)?这些应该从源代码控制中排除。此外,您是否发现任何加载的插件或扩展程序可能会改变VS的行为?最后,您的解决方案中使用了哪些项目类型/模板来创建项目;它们是标准模板的混合吗? - Ryan Riehle
只有.csproj项目文件被检入源代码控制。我安装了第三方扩展,但是同事们也遇到了相同的问题(他们没有安装相同的扩展)。这些都是标准的项目模板,没有什么特别的。 - Sean

0

VS 可能正在解决链接问题,通常是针对引用的程序集。
为了检查发生了什么,请打开您的解决方案并一旦 VS 检出 *.csproj,就“保存所有”(Ctrl+Shift+S)。

导航到您的“待处理更改”窗口并比较 *.csproj 应该会显示问题。


3
当我进行比较时,它显示这些文件是相同的。这就是为什么我感到困惑的原因。 - Sean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接