Согласование скобок и подсветка ссылок внезапно прекращают работу (VS2013)
Согласование скобок Visual Studio 2013, выделение ссылок, автоматическое определение переменной /, изменение имен методов (вместо этого нужно использовать Refactor) и т.д.... перестают работать и снова работают только после перезапуска VS. Я пишу код на С#.
Я единственный страдающий/затронутый этой проблемой?
Очень раздражающая проблема VS2013!! Это происходит только в крупных проектах.
Обновление 1: я понял, что это происходит сразу после открытия любого WinForm в VS Designer. Когда я вернусь к редактированию кода, согласование фигур и прочее исчезнут, и мне нужно перезапустить VS!
Обновление 2: обновление версии Visual Studio 2013 4 и все еще... НЕ исправить!! Здравствуйте, Microsoft?
Обновление 3: Поскольку у моего решения есть несколько голосов, я собираюсь суммировать его здесь. В моем случае проблема была Thread.Sleep была вызвана VS Designer. Это была ошибка кода, но в любом случае Designer не должен запускать команды Thread.Sleep, блокирующие весь VS.
Ответы
Ответ 1
FINALY Я нашел ошибку!
Ну, это швы, вы можете взломать VS IDE и переспать с ним (LOL), побочные эффекты - это те проблемы, с которыми я столкнулся, например, скобки, которые больше не работают.
Как воспроизвести его:
- Создайте проект WinForm
- Создать элемент управления
- Добавьте следующий код в элемент управления
- Перестроить
- Открыть форму1 в дизайнере
Вы заметите Thread.Sleep в действии! Теперь вернемся к редактированию кода, согласованию фигур и тому подобное. Единственный способ исправить это - перезапустить VS.
Код для воспроизведения ошибки:
public UserControl1()
{
InitializeComponent();
Application.Idle += Application_Idle;
}
void Application_Idle(object sender, EventArgs e)
{
Thread.Sleep(200); //Yeah VS IDE will sleep for 200 ms ! LOL!
}
Я думаю, что VS Designer должен игнорировать команды Thread.Sleep, не так ли?
Теперь я просто проверяю, работает ли код внутри VS Designer, прежде чем делать мои вещи, позвонив:
// Return if is inside VS Designer !
if (System.Reflection.Assembly.GetEntryAssembly() == null)
return;
Я также попытался добавить этот код внутри Form1, он швы, что VS игнорирует Sleep.
Ответ 2
Пока не придет исправление, попробуйте отключить кодовый объектив.
tools->options->text editor -> all languages ->code lens
Или просто уничтожьте задачу удаленного доступа ALM. если это очень высокий процессор.
Ответ 3
Это ошибка в Visual Studio, и, к сожалению, Microsoft решила не исправлять до Visual Studio 2015 в соответствии с этим билетом в Connect:
У нас есть планы сделать более глубокие улучшения, но это произойдет не до следующей крупной версии Visual Studio, потому что мы будем использовать преимущества платформы .NET Compiler. В то время как я закрываю эту проблему, помните, что у нас есть работа, запланированная для следующей версии Visual Studio, чтобы исправить ее.
Тем не менее, я смог смягчить эту проблему настолько, что CodeLens снова можно использовать (лично я использую # 3 и # 4):
- Перейдите в Сервис Параметры... Текстовый редактор > Все языки CodeLens и убедитесь, что отмечены только те параметры, которые вам интересны. Чем меньше проверено, тем быстрее будут CodeLens.
- Измените плагин Source Control на Нет. Это полностью решает проблему для меня, но это означает потерю информации об авторе/изменении истории, предоставленной CodeLens.
- После загрузки решения откройте Диспетчер задач в качестве администратора и щелкните правой кнопкой мыши по процессам
Microsoft.Alm.Shared.Remoting.RemoteContainer.dll
(их может быть несколько) и Установить приоритет. Ниже нормального или Низкий. (Вам придется делать это каждый раз, когда вы открываете Visual Studio)
- Если ваш процессор имеет несколько ядер, после загрузки решения откройте Диспетчер задач в качестве администратора и щелкните правой кнопкой мыши по процессам
Microsoft.Alm.Shared.Remoting.RemoteContainer.dll
(их может быть несколько) и нажмите Установите сродство и снимите отметку с одного или нескольких ядер. (Вам придется делать это каждый раз, когда вы открываете Visual Studio)
Я обнаружил, что только # 2 может полностью решить проблему, но # 3 должно быть достаточно, чтобы остановить замораживание, вызванное процессом, насыщающим доступные ресурсы, хотя этот процесс по-прежнему будет приводить к высокому использованию ЦП до тех пор, пока он не завершит обработку. Ваш пробег может отличаться от # 4.
Ответ 4
Я столкнулся с этим сообщением, потому что меня тоже мучила эта проблема, и похоже, что это может быть связано с эта ошибка, о которой сообщалось Microsoft Connect.
К сожалению, похоже, что это не очень удобно, и Microsoft заявила, что обратится к ней в будущей версии Visual Studio (независимо от того, означает ли это новую версию или обновление, я не знаю).
Пользователь Chris Bjugstad опубликовал предложение на странице отчета об ошибке, которая может или не поможет вам:
Я запустил sysinternals procmon и отфильтрован для этого конкретного процесса. В моем случае процесс (Microsoft.Alm.Shared.Remoting.RemoteContainer.dll) - это чтение/запись dll, на которые ссылается один из моих проектов, в папку "теневая копия".
%Temp%\ALM\ShadowCopies\<some_guid>
В приведенной выше папке было 2600 + пустых папок. Я удалил папку, и сначала VS быстрее.
Это, вероятно, только временно устранит вашу проблему (если вообще), пока она не начнет создавать резервные копии этой папки.
Удачи!
Ответ 5
Я тоже заметил эту проблему. Я также заметил, что я не был зарегистрирован в моем профиле Visual Studio, и как только я решил проблему онлайн-авторизации Visual Studio, процессорный бог ушел.