Visual Studio 2017在加载解决方案时卡住了

3
我有一个包含4个项目的解决方案。
  • 一个 .NET Framework 项目 (Ananas)
  • 两个 .NET Core 项目 (Bananas & Cherries)
  • 一个 Xamarin 项目 (Dewberries)
每次我启动 Visual Studio 2017 Community (15.6.2) 并加载该解决方案时,它在加载第一个项目(Ananas)时会挂起。

screenshot

我可以坐着等待30分钟甚至更久,但进度条只会不断地动画。我必须完全关闭Visual Studio才能停止这个过程。 如果我然后删除解决方案文件夹,并从我备份的存档中重新解压它并再次加载它,它会在第一次加载时加载而不会挂起。但是当我关闭解决方案,关闭Visual Studio,重新启动并再次加载它时,它又开始挂起了。
4个回答

3

我有同样的问题,删除解决方案目录中隐藏的.vs文件夹可以解决这个问题。


0

Visual Studio解决方案文件中有许多不同的GUID。

根据我对@samirg答案的评论:

第一个GUID Project("{ <GUID> }") 是.NET项目类型,第二个GUID ".csproj", "{ <GUID> }" 是唯一的项目标识符。您不应更改第一个GUID,但可以将第二个设置为唯一ID。

Visual Studio会生成这两个GUID,第一个是从创建新项目时选择的项目类型生成的,第二个是唯一标识该项目的。

在.NET项目系统存储库README.md中可以看到,您似乎混合了新旧项目GUID。

https://github.com/dotnet/project-system/blob/master/docs/opening-with-new-project-system.md

项目类型 GUID(现在每种语言都有两个)告诉 Visual Studio 如何处理该项目,就像旧的或新的项目类型一样。

FAE04EC0-301F-11D3-BF4B-00C04F79EFBC旧版 C# 项目 GUID。

9A19103F-16F7-4668-BE54-9A1E7A4F7556新版 C# 项目 GUID。

由于您同时拥有两者的混合,为了保持解决方案行为的一致性,我建议将所有旧的 GUID 更改为新的 GUID。

新的 VS2017 项目系统具有许多优点


0

尝试以管理员模式打开Visual Studio。


-1
如果您检查解决方案(SLN)文件,您可能会发现两个或多个项目的GUID重复。请参见以下示例。
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ananas", "Ananas\Ananas.csproj", "{F16C0F09-8509-4370-B4FF-C6E1C1C27C31}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bananas", "Bananas\Bananas.csproj", "{9D7771AE-8A04-438E-858A-7DBD42025BF4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cherries", "Cherries\Cherries.csproj", "{91FB0CB7-5DC1-4B86-B33C-F22BE6A11CF2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dewberries", "Dewberries\Dewberries.csproj", "{424ABA82-B745-4376-8A52-632B9016608E}"
EndProject

如您所见,第一个和最后一个项目具有相同的GUID,而中间的两个项目也具有相同的GUID。您需要做的是生成一个有效的GUID来区分冲突的项目。这样,您将得到类似以下的结果。

Project("{2CD1389C-9B3D-41E9-9AC4-FB6402671C81}") = "Ananas", "Ananas\Ananas.csproj", "{F16C0F09-8509-4370-B4FF-C6E1C1C27C31}"
EndProject
Project("{73ED998E-CD14-48E9-8193-A60F496F9CD7}") = "Bananas", "Bananas\Bananas.csproj", "{9D7771AE-8A04-438E-858A-7DBD42025BF4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cherries", "Cherries\Cherries.csproj", "{91FB0CB7-5DC1-4B86-B33C-F22BE6A11CF2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dewberries", "Dewberries\Dewberries.csproj", "{424ABA82-B745-4376-8A52-632B9016608E}"
EndProject

为了生成有效的 GUID,我建议您使用在线工具,例如 Online GUID Generator

有趣啊……你可以看出,次要 ID 都是唯一的。那么为什么 Xamarin 项目会有与常规 .NET Framework 项目相同的 ID 呢?如果它们表示不同的项目类型,它们不应该不同吗?而且,为什么 VS 能够接受我随机生成的项目 ID 呢?这些都是合理的问题,我可能不会得到这些问题的答案。谢谢你的回复,如果我再次遇到这个问题,我会记住这个建议的。 - Samir
@seangwright 你有同样的问题吗?你是否通过更改次要ID来解决它? - Samir
我在微软文档中没有找到这些 GUID 的参考资料,但在 Code Project 上有一个很好的列表。 - Samir
请查看dotnet项目系统存储库 https://github.com/dotnet/project-system/blob/master/docs/opening-with-new-project-system.md。需要一些谷歌搜索,但它提供了新旧项目GUID的参考,似乎您混合使用了它们。 - seangwright
作者谦虚地承认他并不知道所有的事情。作者并不认为这是解决所有可能问题的答案,作者知道这是解决他最初问题的答案。这就是为什么作者决定以问答的形式发布自己的答案。当然,其他人的结果可能会有所不同。免责声明:这可能不是一个完美的解决方案,可能是错误的,或者是非常危险的。因此,作者建议您对这个答案持保留态度,并自行承担使用风险。 - Samir
显示剩余2条评论

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