如何阻止Visual Studio“始终”检出解决方案文件?


152

显然没有理由,每次我打开解决方案时,Visual Studio都会将sln文件签出。

如果将其与以前的版本进行比较,则没有任何变化。但这确实令人沮丧,因为每个人都有解决方案。

我正在使用VS 2008和TFS 2008,两者均为SP2。

关于如何阻止这种情况发生的任何想法?或者是VS的TFS源代码控制提供程序的功能/错误?


您是否有一个单元测试项目作为解决方案的一部分?
米奇·麦特

1
TFS支持并发检出,只要不对.sln文件进行修改,多次检出都不是问题。
Dirk Vollmar

5
当* .sln文件发生实际更改时,它们是合并的噩梦,因为其中的项目被赋予了任意但不是唯一的ID。我大力倡导并发检出,但我将大多数* .sln锁定。
理查德·伯格

3
这已在VS2013中修复!!!我在2012年打开了相同的解决方案,并签出了.sln,该解决方案在2013年打开,目前情况尚不清楚。
felickz

2
我时不时地看到这种情况,从Visual Studio 2010一直到最新版本,即Visual Studio 2015 Update 3的所有版本。打开解决方案的时间大约是我的一半,而且解决方案似乎更频繁与许多项目。
ToreØstergaard16年

Answers:


121

.sln文件中包含以下内容时,会发生这种情况:

GlobalSection(ExtensibilityGlobals) = postSolution
    MyGlobalProperty = AnyValue
EndGlobalSection

我发现企业库添加了其中之一。我将其删除,在解决方案中签入,然后关闭然后重新打开,不再进行自动签出。


21
看起来Unity NuGet软件包可能已对VS 2010中的解决方案文件执行了此操作。我删除了此部分,并解决了自动结帐问题。谢谢格雷厄姆!
丹·莫克

14
我最喜欢的两项技术-TFS和EntLib-真是一对宝贝。

1
我有这样的部分,但由于包含我要保留的数据,不想删除它-现在怎么办?MS将此问题作为“不可复制”解决了-愚蠢的?connect.microsoft.com/VisualStudio/feedback/details/573538/...
mattanja

Dan的评论添加了所需的信息-不必删除所有全局部分-只是似乎由unity nuget软件包添加的部分。
Jordan0Day 2012年

2012
BlackICE

6

从内存中,如果使用“ 工具”,“选项”菜单并选择“ 源代码控制”,“环境”面板,则应该有一些选项用于配置IDE与版本控件的接口方式。

我认为其中一些选项可控制开放行为的检出


1
是的...他们允许您自动结帐,从结帐提示或不执行任何操作...但是无助于解决此问题
CodeClimber

当提示您时,您不能只是说“不,不退房”吗?
Scott Marlowe

我希望我是团队中唯一的开发人员...不幸的是,我不能依靠所有开发人员的勤奋工作
CodeClimber

CodeClimber,每次您启动VS时,它都会自动签出,并且您希望它停止并关闭“自动签出”选项不能解决问题。什么啊
veight

1
对于那些在其选项列表中没有“环境”的用户,请将您的连接从“本地”更改为“服务器”(来源:stackoverflow.com/questions/26843300/…
VenerableAgents 2014年

5

以防万一,像我一样,您无法正常工作,并且发现一个或多个项目也被签出,我找到了一个更简单的解决方案。记下它不断签出的项目。转到文件-源代码管理-更改源代码管理,然后取消绑定有问题的项目。单击“确定”,“保存全部”,然后返回到“更改源代码控制”,并将项目绑定到解决方案。希望这对其他人有用



3

允许签出,然后比较两个文件。如果VS添加了类似的东西

<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />

您在VS2008中遇到带有解决方案的VS错误,但未移植到VS2005

检查此链接以获取更多详细信息:


解决方案中没有项目具有此XML行
CodeClimber

2

正在使用Microsoft企业库通过一个或多个解决方案项目以静默方式检出Visual Studio解决方案文件-我相信这与企业库配置实用程序有关,后者允许对各种应用程序块进行配置管理-http ://msdn.microsoft.com/zh-CN/library/ff649479.aspx

请参阅此Microsoft反馈过帐:http : //connect.microsoft.com/VisualStudio/feedback/details/737184/globalsection-extensibilityglobals-postsolution-checks-out-sln-file-on-open


感谢链接Nigel,所有团队都遇到了这个问题
Baldy 2014年

1

它是解决方案中加载的一个项目系统的功能/错误。尝试删除各种类型的项目(C#,VB,C ++,网站,Web应用程序,单元测试,Silverlight ...),直到它消失;那就是你的答案。


0

您是否在比较之前保存文件?不久前发生在我身上,并一直说文件之间没有变化,但是一段时间之后,我意识到我没有保存文件,并且它与磁盘中的版本进行比较,而不是与内存中的版本进行比较。

每次在Visual Studio中打开某个解决方案时,它都会执行某些操作,这可能会导致您的.sln或项目文件更改,然后要求您检出该文件。当开发人员机器中的文件夹结构发生更改时,或者当他们没有所有文件的相同版本时,就会发生这种情况。也许有人在某个文件夹中添加了一个项目,而另一个开发人员在另一个地方拥有了相同的项目。我看到发生这种情况的另一种情况是,当我们有一些c ++项目的解决方案时,由于某种原因,其中一个c ++项目具有一个带有绝对路径的.res文件。VS自动生成此文件后,它将在开发人员机器之间保持更改。

我建议您打开.sln文件,并根据某些开发人员机器中可能不存在的绝对路径或相对路径来查找,这取决于它们从您的源代码管理中获取的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.