2017-01-12 4 views
0

Я уже видел этот вопрос: Visual studio is waiting for internal operation to complete поэтому, пожалуйста, не отмечайте это как дубликат.Visual Studio 2015 зависает при вводе кода в большом файле C#

У меня есть большой файл кода C#, который засевает базу данных примерно с 2000 объектами местоположения и 1000 объектов категории. Этот файл обязательно содержит несколько тысяч переменных. Всякий раз, когда я пытаюсь ввести еще один код в этот файл, Visual Studio зависает с сообщением: Visual studio занят: Microsoft Visual studio ждет завершения внутренней операции.

Это происходит только при вводе кода в этом конкретном большом файле, например. если я набираю string, а затем ударяю пространство, Visual Studio замерзает. Потому что string и пространство будет сразу же подчеркнуто красной коротковолновой линией и ошибкой до тех пор, пока вы не закончите оператор кода, возможно ли, что это может быть связано с тем, что средство статического типа не может обрабатывать большие файлы, или некоторые другой естественный предел или ошибка?

Вещи я пытался до сих пор:

  • Удаление папки ".vs" на корню проекта
  • Удалить .suo файл в корневом каталоге проекта
  • Ремонт Visual Studio
  • Переустановка Visual Studio

Я использую обновление сообщества Visual Studio 2015 3.

+2

Почему вы помещаете так много классов в один файл? –

+0

Может ли это быть вызвано дизайнером модели EF? Он замораживает VS при регенерации классов сущностей и больше объектов в модели дольше, чем требуется. Он также периодически выполняет автосохранение, которое блокирует VS. – Dai

+0

@ DannyChen не классы, переменные. Это просто строковые переменные, которые используются при посеве базы данных с элементами местоположения и категории. – nmit026

ответ

0

Visual Studio задыхался от размера метода Seed. Я разделил содержимое этого метода на несколько методов в отдельных файлах. Я также уменьшил количество строковых переменных в каждом методе. Мне фактически не нужно было объявлять множество строковых переменных, поскольку каждый из них использовался только один раз подряд в AddOrUpdate, но по разным причинам я чувствовал, что они повышают точность и читаемость.

Еще одно напоминание о том, что наше оборудование и программное обеспечение все еще имеют серьезные ограничения. Вот в будущее.

+0

Данные! = Код. Данные не * принадлежат * в коде. * Это * вынос здесь. –

+0

@ Mat'sMug серьезный вопрос: если я не засеваю базу данных из кода, какие еще варианты? Я мог бы пойти по пути SQL-скриптов, но я обнаружил, что этот подход просто добавляет сложности.Этот файл является технически кодовым файлом (со всеми вытекающими из этого преимуществами), но на практике это действительно просто большой файл данных. Какой подход вы обычно делаете для сеяния большого количества данных? – nmit026

+1

Вы можете иметь данные о посеве в некоторых файлах xml или csv (Excel?), А метод 'Seed()' может загружать или десериализовывать данные из файла (ов) и заполнять базу данных очень маленьким кодом. –