Visual Studio 2017 зависает при загрузке решения

У меня есть решение, содержащее 4 проекта.

  • Один проект.NET Framework (Ananas)
  • Два.NET Core проекта (Бананы и Вишни)
  • Один проект Xamarin (Dewberries)

Каждый раз, когда я запускаю Visual Studio 2017 Community (15.6.2) и загружаю решение, оно зависает при загрузке в первом проекте (Ananas).

Скриншот

Я могу сидеть и ждать, пока он загрузится в течение 30 или более минут, но индикатор выполнения просто продолжит анимацию. Я должен полностью убить Visual Studio, чтобы остановить это.

Если я затем удаляю папку решения и заново распаковываю ее из архива резервных копий, который я спрятал, и загружаю его снова, она загружается в первый раз без зависаний. Но когда я закрываю решение, закрываю Visual Studio, перезагружаюсь и загружаю его снова, оно снова начинает зависать.

3 ответа

Решение

Если вы проверяете файл Solution (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.

У меня была такая же проблема, и удаление скрытой папки.vs в каталоге решения устранило проблему.

Попробуйте открыть Visual Studio в режиме администратора.

В файлах решений Visual Studio много разных руководств.

Согласно моему комментарию к ответу @samirg:

Первый гид Project("{ <GUID> }") это тип проекта.net, второй Guid ".csproj", "{ <GUID> }" это уникальный идентификатор проекта. Вы не должны изменять первый, но вы можете установить второй уникальный идентификатор.

Visual Studio генерирует оба: первый тип проекта, который вы выбираете при создании нового проекта, второй однозначно идентифицирует этот проект.

Похоже, у вас есть смесь как новых, так и старых руководств проекта, как показано здесь в репозитории.net Project System README.md

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

Guid типа проекта (на данный момент их по два на каждый язык) сообщает Visual Studio, что нужно воспринимать проект как старый или новый тип проекта.

FAE04EC0-301F-11D3-BF4B-00C04F79EFBC старый проект C#

9A19103F-16F7-4668-BE54-9A1E7A4F7556 это новый проект C#

Поскольку у вас есть смесь обоих вариантов, я бы изменил все старые направляющие на новые для согласованности в поведении решения.

Новая система проектов VS2017 имеет массу преимуществ.

Другие вопросы по тегам