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 много разных руководств.
Согласно моему комментарию к ответу @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 имеет массу преимуществ.