ChatGPT解决这个技术问题 Extra ChatGPT

如何阻止 Visual Studio“总是”签出解决方案文件?

显然没有任何理由,每次我打开我的解决方案时,Visual Studio 都会检查 sln 文件。

如果我将它与以前的版本进行比较,则没有任何变化。但这真的很令人沮丧,因为每个人都检查了解决方案。

我正在使用 VS 2008 和 TFS 2008,都是 SP2。

关于如何阻止这件事发生的任何想法?还是 VS 的 TFS 源代码控制提供程序的功能/错误?

你有一个单元测试项目作为解决方案的一部分吗?
TFS 支持并发签出,只要不修改 .sln 文件,多次签出都不是问题。
当 *.sln 文件发生实际更改时,合并它们是一场可怕的噩梦,因为其中的项目被赋予任意但不唯一的 ID。我是并发结账的忠实拥护者,但我将大部分 *.sln 锁定。
这已在 VS2013 中修复!!!我在 2012 年打开了相同的解决方案,它检查了 .sln,在 2013 年打开并且它保持清晰。
我不时看到从 Visual Studio 2010 到最新版本 Visual Studio 2015 Update 3 的所有版本。这种情况发生在我打开解决方案的大约一半时间里,而且解决方案似乎更频繁有很多项目。

G
Graham Clark

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

GlobalSection(ExtensibilityGlobals) = postSolution
    MyGlobalProperty = AnyValue
EndGlobalSection

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


看起来 Unity NuGet 包可能已经对我在 VS 2010 中的解决方案文件执行了此操作。我删除了此部分并且我的自动结帐问题得到了解决。谢谢格雷厄姆!
我最喜欢的两种技术——TFS 和 EntLib——真是一对宠儿。
我有这样一个部分,但不想删除它,因为它包含我想要保留的数据 - 现在怎么办? MS将此问题关闭为“不可重现”-愚蠢吗? connect.microsoft.com/VisualStudio/feedback/details/573538/…
Dan 的评论添加了所需的信息——没有必要删除所有全局部分——只是似乎被统一 nuget 包添加的部分。
这行得通。正如本答案中所述,我在 GlobalSection 中有一个 NuGet 引用。解决方案文件在每次打开时都被签出,没有任何更改。删除了此部分,解决方案文件不再自动签出。
j
jussij

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

我认为其中一些选项控制开放行为的结帐。


是的...它们允许您自动结帐、结帐提示或什么也不做...但没有任何帮助解决这个问题
当它提示您时,您不能只说“不,不退房”吗?
我希望我是团队中唯一的开发人员……不幸的是,我不能相信所有开发人员都勤奋
CodeClimber,每次您启动 VS 时,它都会自动签出,您希望它停止并且关闭自动签出选项并不能解决问题。什么?
对于那些在选项列表中没有“环境”的人,请将您的连接从“本地”更改为“服务器”(来源:stackoverflow.com/questions/26843300/…
J
JJ76

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


D
Dave Roberts

尽管一开始并没有防止问题发生,但如果没有进行任何更改,随意使用 Team Foundation Power Tools“撤消未更改”命令将(令人惊讶地)撤消挂起的编辑。


Team Foundation Power Tools 的更新链接:marketplace.visualstudio.com/…
a
abatishchev

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

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

您在 VS2008 中使用解决方案遇到 VS 错误,但未移植到 VS2005

查看 this link 了解更多详情:


解决方案中没有项目有这行 XML
N
Nigel Belham

Visual Studio 解决方案文件正在使用 Microsoft 企业库通过一个或多个解决方案项目以静默方式签出 - 我相信这与允许对各种应用程序块进行配置管理的企业库配置实用程序有关 - { 1}

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


感谢 Nigel 的链接,所有团队都遇到了这个问题
R
Richard Berg

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


C
Carlos

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

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

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