5

Visual Studio 的解绑是什么?对解决方案.suo 文件中的项目执行绑定操作吗?

Microsoft 提供了有关如何:绑定或取消绑定解决方案或项目的说明,这恰好可以解决在解决方案打开时出现的可怕的“未指定错误”。这个MSDN 论坛帖子有一个用户说他们取消绑定然后重新绑定他们的项目以解决这个问题。

当我遇到相同的“未指定错误”问题时,我进行了一些额外的挖掘,发现解决方案.suo 文件是我解决问题后唯一可能发生变化的候选者。

我阅读了关于 .suo 文件有效地一次性处理的 SO 问题的答案,并且碰巧能够通过我放置的陈旧工作区重新创建 UE 问题。所以我继续删除解决方案.suo 文件并打开解决方案.sln 文件。神奇的是,我的 UE 问题也随着那个工作区消失了。

这使我得出结论 unbind | bind 对 .suo 文件有某种影响,但由于文件二进制、专有结构,我无法确定发生了什么。

我的问题:
1. 那么 Visual Studio 的 unbind 到底是什么?对解决方案.suo 文件中的项目执行绑定操作吗?
2. 既然我找到了 .suo 文件的链接,任何人都可以推测是什么导致了这些“未指定的错误”吗?


脚注 1:这篇MSDN 文章解释了一些关于 .suo 文件的内容,但并没有真正深入细节。

脚注 2:项目/解决方案打开上的“未指定错误”似乎是相当糟糕的,正如这里、各种搜索和这个旧的 MS KB所证明的那样

4

2 回答 2

2

Sure, the .suo file is where Visual Studio stores the state of the IDE. So that when you open a solution again later, everything restores the way you left it off. The most obviously visible effect is that windows restore in their original position and size. And yes, the binding of the solution to the specific source control server where you want the changes to be checked in could well be stored there as well, it is the logical place for it.

"Unspecified error" is a very generic COM error code named E_FAIL. Visual Studio uses a lot of COM code, the add-in system is entirely COM based. It is a lousy error because it doesn't mean anything more than "it didn't work, don't know why". Similar to returning false from a function. There's a programmer at Microsoft somewhere that could have done a better job reporting the problem. Maybe that wasn't so easy.

于 2013-04-11T23:52:32.663 回答
2

VS 项目绑定存储哪些项目由源代码控制管理。它保存在 .SLN 文件中。

不幸的是,源代码控制系统很难合并它的保存格式。因此,绑定经常被损坏,从而在加载解决方案时导致错误的“项目已添加到源代码管理”消息。解决此问题的过程是从 .sln 文件中删除整个部分,在 VS 中打开,然后重新绑定解决方案,这将正确创建该部分。

顺便说一句,整个解决方案文件格式对于合并来说非常糟糕。它闻起来像 VS6,源代码控制部分闻起来像 SourceSafe。我希望他们会转向一些基于 MSBuild 的格式,就像他们对(几乎所有)项目文件所做的那样。

于 2013-04-12T10:36:10.447 回答