Инициализация intellisense завершена но при попытке загрузить документ возникла ошибка visual studio

Обновлено: 05.07.2024

У меня были проблемы с Intellisense в Microsoft Visual Studio 2012 . Я буду работать над проектом, редактировать код и все такое (через некоторое время, от 5 минут до более часа) и внезапно, больше никаких предложений по коду или интеллигенции. Кажется, что оба перестают работать полностью одновременно.

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

Пожалуйста, ограничьте свои теги теми, которые действительно необходимы. «Майкрософт» нет, так как никто не делает Visual Studio и не имеет vb.net. "application-settings" может показаться сохранением / чтением настроек приложения, которое вы пишете, а не IDE, которое вы используете. Вы также можете отредактировать свой вопрос и разбить его на несколько читаемых абзацев; Стена текста, которую вы разместили, трудна для чтения, и чем проще вы зададите свой вопрос, тем выше ваши шансы на получение помощи. :-) Извините за это, просто я так взволнован, когда вещи, которые должны работать, просто по какой-то причине. +1. У меня была одна и та же проблема несколько раз в VS 2010. Перезапуск VS обычно помогает. Нет необходимости сбрасывать настройки. Такое случается редко, поэтому для меня это никогда не было большим делом.

Я провел много времени, исследуя ту же проблему. Некоторые решения связывают эту ошибку с некоторыми ссылочными сборками. Другие говорили, что так Microsoft.Windows.Design.Extension.dll и .Interactivity.dll должно быть в ссылках проекта. Но ни одно из этих решений не помогло мне.

У меня есть Visual Studio 2013, и это все еще происходит. Это все еще ошибка? Да, это так. И, к сожалению, за последние пару лет VS становился все медленнее и медленнее с каждой итерацией. Это не должно быть принятым ответом. Ответ Тони Л. ниже верен. У меня есть Visual Studio 2015, и intellisense работает очень медленно или вообще не работает. Иногда это работает нормально, но обычно нет.

Я должен отметить, что у меня не было проблемы с момента обновления моей оперативной памяти. Я не могу подтвердить, связано ли это, но проблема была распространена, когда у меня было 2-4 ГБ ОЗУ. Никаких проблем, так как собирается 8 и 16Гб.

Если кажется, что затронут только один файл / окно, закройте и снова откройте этот файл. Если это не сработает, попробуйте ниже.

В Visual Studio:

  1. Нажмите Инструменты-> Параметры-> Текстовый редактор-> Все языки-> Общие
  2. Снимите флажок «Авто список участников»
  3. Снимите флажок «Информация о параметре»
  4. Отметьте «Авто список участников» (да, тот, который вы только что отметили)
  5. Проверьте «Информация о параметре» (опять же, тот, который вы только что отметили)
  6. Нажмите ОК

Если это не сработает, попробуйте еще несколько шагов:

  1. Закройте все документы VS и снова откройте
  2. Если все еще не работает, закройте / снова откройте решение
  3. Если все еще не работает, перезапустите VS.

Для проектов C ++: у
MSDN есть несколько вещей, которые стоит попробовать: предложения MSDN

Поврежденный .ncb файл кажется наиболее вероятным.

  1. Закройте решение.
  2. Удалить .ncb файл.
  3. Вновь откройте решение. (Это создает новый .ncb файл.)
  • Копирование / вставка элементов управления на исходной странице. Я обнаружил, что мой designer.vb файл тоже не обновлялся.
  • Скопируйте / вставьте код с другой страницы, которая вызвала ошибку, потому что скопированный код ссылался на элемент управления, которого не было на странице, на которую я вставлял.
  • Проект C ++ имеет поврежденный .ncb файл

(Пожалуйста, добавьте в комментарии, если вы заметили поведение, которое вызывает это.)

Для меня перезапуск VS НЕ имел такого эффекта, как закрытие и открытие этого файла. Большое спасибо! Бит Tools-> работает и на VS2015 Ultimate Update 2, без перезагрузки. Если бы только я мог дать этот ответ + 1 ^ 6, я был в двух умах, чтобы перейти к Eclipse> ;-) Тем не менее, кто-то в MS должен быть обрезан за ненадежность, вызванную этой ошибкой во всем мире Другой глупой причиной отсутствия аргумента функции Intellisense может быть недоступный уровень защиты. Например, protected ctor вместо public . protected Т е р появится в списке функций за пределы доступного объема, но аргумент IntelliSense будет отсутствовать, что несколько непоследовательный ИМХО. То, что работало для меня, было проверкой / снятием галочки, закрытием всех окон и перезапуском.

Для меня работает удаление динамически созданного файла .suo (Опции пользователя решения) в каталоге .vs (скрытый), который находится по тому же пути, что и файл решения.

Я иногда возвращаюсь к этой проблеме, и она связана с другими проектами / решениями, но никогда не затрагивает VS. Новые проекты всегда работают нормально.

Выпуск VS2015 Professional Обновление -2-

Это решение сработало для меня! Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 , Большое спасибо. НЕ следуйте этому совету. все конфигурации моего проекта исчезли (включая каталоги, определения и т. д.). VS2017

У меня та же проблема; Случайно Intellisense перестанет отображаться в некоторых файлах, но не в других. Я только что это случилось со мной снова. Нажатие Ctrl + Space ничего не отобразит Form1 , переключение Form2 или любой другой класс отобразит список, как и ожидалось. Перезапуск Visual Studio обычно делает свое дело, хотя это очень раздражает и нелепо, если такая базовая функция нарушена .

Что сработало для меня, так это отключив, а затем снова включив Resharper

Перейти к
Tools -> Options-> Resharper ->General

Нажмите
Suspend -> Это отключает резарпер

Затем проверьте, работает ли Intellisense или нет. В моем случае, это было и тогда я возобновил в Resharper .

Если это не работает, вам может понадобиться Goto
Resharper -> Options-> Environment -> Intellisense -> General

И
изменить Intellisense на Visual Studio

Я нашел решение, которое работает для меня 100% времени (у меня не установлен ReSharper). Нажатие Refresh на Solution Explorer производителях INTELLISENSE вернуться.

У меня работает в VS2017, и я не знаю, установлен ли ReSharper. (Я думаю, что это покрывает все возможные случаи.)

У меня не получилось со всеми этими шагами. Как ни странно, я заметил, что Intellisense работает над другим решением в visual studio 2015, но не над конкретным.

Я нашел и удалил файл .suo и перезапустил Visual Studio. Это исправило это для меня.

У меня была такая же проблема в Visual Studio 2010 на C ++, и я превзошел ее по инструментам -> Параметры -> Текстовый редактор -> C / C ++ -> Дополнительно -> Отключить базу данных -> False, Ok; Закрыть VS; открой VS и вуаля.

Сначала я тестировал его один раз перед перезапуском VS, и он не работал, несколько раз менял этот параметр, затем перезапускал, и после перезапуска у него было другое поведение в соответствии с последним изменением; Поэтому я вывел эффекты, возникающие после перезапуска VS.

Через некоторое время я решил так:

2) Установите флажки «Автоматический список участников» и «Включить виртуальное пространство».

С visual studio> 2015 я удалил файл .suo. (найдите его в своем проекте через файловый менеджер)

Перезапустите Visual Studio, и все готово.

Я сталкиваюсь с той же проблемой в Visual Studio 2015 Preview. Я закрыл этот файл и снова открыл его. Это исправляет это для меня :).

В моем случае я добавил .ascx.cs в проект с помощью правого клика => «Включить в проект», но в проекте было установлено «Содержимое» вместо «Компиляция». Как только я установил для этого значение «Compile», intellisense снова начал работать.

MS Visual Studio 2017 Pro, проекты C ++

IntelliSense работает только тогда, когда я загружаю проект, дважды щелкнув файл решения.

Я попробовал все вышеприведенные ответы, к сожалению, не повезло. Dll's, настройки, зависимости . вы называете это. Это отстой, что вы должны пройти через все это для автозаполнения . пропустите мой конфиг Vim .

У меня VS2012 обновление 4, и проблема периодически, но как только она попадает на эту конкретную редактируемую страницу, она остается там. Одно из решений - просто закрыть страницу и отредактировать ее.

Вот некоторые ярлыки KBD, чтобы попытаться перезагрузить его, но не знаю, работают ли они.

Я думаю, что это еще одна ошибка IS . у нее было много проблем в прошлом.

Ответ @ TonyL мне не помог, но я заметил, что Intellisense перестал работать в foo классе после того, как я изменил сигнатуру метода в bar классе.

Закрытие и повторное открытие foo.cs файла исправили его.

Одна вещь, которая только что помогла мне,

  1. Удаление каждого файла проекта, который там. В моем проекте 10 папок, более 30 файлов.
  2. Воссоздание проекта.

Это занимает около 5 минут - но экономит много времени, поскольку intellisense фактически начал работать.

Следует отметить, что использование памяти (в правом верхнем углу VS 2013 Ultimate) показывает падение примерно на 40%.

Небольшие проекты будут в порядке с этим. Я сейчас смотрю на бессмысленный проект с более чем 100 000 файлов.

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

У меня уже установлено обновление, и у меня возникла эта проблема. У меня есть обновление 4, но это все еще может произойти. Я предполагаю, что перезапуск VS, возможно, был тем, что фактически исправило это для Вас.

У меня была та же проблема, оказалось, что пакеты nuget не загружались автоматически для решения, которое я недавно загружал из хранилища, поэтому intellisense не было доступно, поскольку ни один из необходимых пакетов для отображения правильных предложений не был доступен.

В настоящее время я смотрю учебник MVA по Python на YouTube и заметил, что моя интеллигенция также исчезла, вскоре после того, как они объяснили, почему,

что-то вроде этого (извините, что у меня нет правильного словарного запаса кодирования, я новичок в программировании, но нашел решение)

Ответ: «Visual Studio не всегда может угадать, что вы пытаетесь ввести - поэтому она не всегда понимает, что она должна дать вам подсказку, например, если вы пытаетесь использовать строку внутри переменной и вам нужен intellisense, чтобы дать вам В опциях для содержимого этой строки вы должны когда-нибудь сообщить Visual Studio, что эта переменная на самом деле является строкой.

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

Добавление существующего элемента в область проекта исправило это для меня.

В моем случае я сначала просто не наблюдал и не увидел, чтобы один из 30+ проектов в моем решении сказал «(загрузка не удалась)», хотя один из его файлов все еще был загружен в редактор, но не имел смысла. Перезагрузка проекта сделала свое дело.

Intellisense не распознал импортированное пространство имен в моем случае, хотя я мог успешно скомпилировать проект. Решением было снять флажок импортированного пространства имен на вкладке ссылок проекта, сохранить проект, проверить его снова и сохранить проект снова.

У меня была эта проблема, когда некоторые из зависимых сборок были изменены, но заблокированы другим экземпляром Visual Studio (2015).

Моим решением (я использовал перформанс) является загрузка всего решения вместо отдельного файла.

Первоначально я загрузил файл, нажав на него в перформанс

Решение Закрыть VS (который закрыл отдельный файл) Открывается заново, запуская файл решения вместо отдельного файла

Если вы используете главные страницы, создайте пустую главную страницу и используйте эту главную страницу на своей странице содержимого. Если это решит проблему, значит, у вашей оригинальной главной страницы есть проблемы. Шаг за шагом перенесите исходный код на новую главную страницу и после каждого порта проверяйте, правильно ли работает intellisense. Этот трюк решил мою проблему с интеллигенцией.

Для python попробуйте нажать кнопку «Python XX» в левой части нижней строки состояния и изменить ее на другие значения.

IntelliSense для одного файла

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

Проверка списка ошибок

Если файл не открыт в режиме одного файла и функция IntelliSense работает неправильно, сначала нужно проверить окно "Список ошибок". Чтобы увидеть все ошибки IntelliSense в текущем исходном файле вместе со всеми включенными файлами заголовков, выберите в раскрывающемся списке Сборка и IntelliSense:

"Сборка и IntelliSense" в окне "Список ошибок"

В IntelliSense отображается не более 1000 ошибок. Если файлы заголовков, включенные в исходный файл, содержат более 1000 ошибок, в самом начале исходного файла отображается только один маркер ошибки в виде волнистой линии.

Проекты MSBuild

Включаемые каталоги VC++

Чтобы просмотреть текущие значения макросов сборки, например VC_IncludePath, выберите строку "Включаемые каталоги" и щелкните раскрывающийся список справа. Затем выберите <Edit> и нажмите кнопку Макросы.

Проекты, использующие файл makefile

Для проектов Makefile, которые основаны на шаблоне проектов NMake, выберите на левой панели NMake, а затем Путь поиска включаемых файлов в категории IntelliSense:

Пути включаемых файлов в проекте Makefile

Проекты в виде папок

Если в файле CppProperties.json есть синтаксическая ошибка, функция IntelliSense для затронутых файлов будет работать неправильно. В окне вывода Visual Studio будет отображаться ошибка.

Ошибки анализа тегов

Анализатор тегов — это анализатор кода C++ с нечеткой логикой, который используется для просмотра и навигации. Он работает очень быстро, но не пытается полностью интерпретировать каждую конструкции кода.

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

Есть два типичных проявления этой проблемы в Visual Studio:

Если на панели навигации отображается корневой макрос, значит, текущее определение функции пропущено:

Анализатор тегов пропускает определение функции

Интегрированная среда разработки предлагает создать определение для функции, которая уже определена:

Анализатор тегов предлагает определить существующую функцию

Чтобы устранить подобные проблемы, создайте файл с именем cpp.hint в корневом каталоге решения. Дополнительные сведения см. в статье Файлы подсказок.

Ошибки анализатора тегов отображаются в окне Список ошибок.

Проверка параметров проекта с помощью журнала ведения диагностики

Чтобы проверить, использует ли компилятор IntelliSense правильные параметры, например включаемые пути и макросы препроцессора, включите журнал ведения диагностики для командных строк IntelliSense в разделе Средства > Параметры > Текстовый редактор > C/C++ > Дополнительно > Запись данных диагностики. Установите следующие значения параметров: Включить ведение журнала — True, Уровень ведения журналов — 5 (самый подробный) и Фильтр ведения журналов — 8 (журнал IntelliSense).

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

Возможно, эти сведения помогут определить, почему IntelliSense выдает неточную информацию. Например, если включаемая папка вашего проекта содержит строку $(MyVariable)\Include, а в журнале диагностики в качестве включенного пути отображается /I\Include, значит, переменная $(MyVariable) не была вычислена и была удалена из окончательного включаемого пути.

Компиляция IntelliSense

Visual Studio использует выделенный компилятор C++ для создания и обслуживания базы данных, используемой для всех функций IntelliSense. Чтобы синхронизировать базу данных IntelliSense с кодом, после определенных изменений в параметрах проекта или в исходных файлах Visual Studio автоматически запускает в фоновом режиме задачи компиляции только для IntelliSense.

Но иногда Visual Studio может не обновлять базу данных IntelliSense своевременно. Например, после выполнения команды git pull или git checkout Visual Studio может потребоваться вплоть до часа для того, чтобы обнаружить изменения в файлах. Вы можете принудительно запустить повторное сканирование всех файлов решения. Для этого щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите Повторить сканирование решения.

Устранение ошибок компиляции IntelliSense

При компиляции IntelliSense не создаются двоичные файлы, но она также может завершиться с ошибкой. Одна из возможных причин ошибки — использование пользовательских файлов с расширениями .props или .targets. В Visual Studio 2017 версии 15.6 и более поздней ошибки сборки только для IntelliSense отображаются в окне вывода. Чтобы их увидеть, в раскрывающемся списке Показать выходные данные из выберите Решение:

Окно вывода для ошибок решения

Если присвоить переменной среды TRACEDESIGNTIME значение true и перезапустить Visual Studio, вы найдете в каталоге %TEMP% файл журнала, который может помочь при диагностике ошибки компиляции.

Дополнительные сведения о переменной среды TRACEDESIGNTIME см. в статьях о Roslyn и общей системе проектов. Сведения в этих статьях относятся и к проектам C++.

I have noticed a weird issue with Visual Studio 2019 v16.0.1 the IntelliSense about "Using directive is unnecessary" normally grey is missing and type reference suggestion for missing using is not working.

I also tried with Visual Studio 2019 Preview but no luck.

I have tried the following:

  1. deleted .vs folder and restarted.
  2. Reinstalled Visual Studio
  3. Reset settings via import and export setting under tools

Any other suggestions will be appreciated.


12.9k 8 8 gold badges 85 85 silver badges 110 110 bronze badges


121 1 1 gold badge 1 1 silver badge 3 3 bronze badges mine works, I am using a preview. latest, which project are you trying to create? as in which template have you create? WPF or Win FOrms, or net core?? Try updating to latest version to check if it helps. And if this issue occurs in simple console app or class library. If it only occurs in specific project type, share more details(project type, framework,nuget package. ) so that we can check for you:) Turning it off and on again often gets it working again.

13 Answers 13

  1. Close Visual Studio
  2. Delete .vs folder (it is a hidden folder inside the folder which contains the solution *.sln)
  3. Start Visual Studio

Solved my problem

Update From the comments

Deleting Browse.VC.db file within .vs folder worked for me.
I did this to avoid deleting .suo which has information I want to preserve

NOTE 1: I am using Visual Studio 2019, but it may work on other versions
NOTE 2: This did not solve the OP problem, but it is a good candidate to solve your


12.9k 8 8 gold badges 85 85 silver badges 110 110 bronze badges @MorioBoncz 1. are you sure that you are showing the hidden folders because by default it is the hidden folder? 2. Make sure to build the project at least one time using VS 3.You are using VS not VS code :) Deleting Browse.VC.db within .vs worked for me. I did this to avoid deleting .suo which has information I want to preserve and is in the .vs folder.

Go to Tools -> Options -> Text Editor -> All Languages -> General. Make sure “Auto List Members” is checked. Also, make sure “Parameter Information” is checked.


Worked perfectly to me. For me those two options were marked as a square not as a V so I just made sure that it is marked as V for all languages.

If you are facing this issue with Unity projects then,

unity settings help

This will restart Visual Studio with your project.

5,328 22 22 gold badges 39 39 silver badges 63 63 bronze badges


In my case, Resharper is the culprit. Disabling it immediately solved the issue.

This, in fact, did help! Now the next step would be to figure out what exactly in ReSharper causes the problem and fix it.

I think these issues are discussed here and are resolved by an update and some worksrounds are bring discussed:


2,632 1 1 gold badge 17 17 silver badges 30 30 bronze badges

I use resharper (vs 2017) but had not installed it on 2019. After installing Resharper on 2019 the intellisense started working again. (yes, it was working in 2019, then stopped) I don't have an explanation on why this would fix it. Just did for me.

First time I use VS 2019, I need to manually install Code Analysis. Make sure it is installed at your project properties.

VS2019

And today, for the new class, the suggestion or namespaces not showing for VS 2019 Intellisense, and Go to Definition not working too.

I must do close solution, and re-open and VS 2019 doing scanning while opening project, and then worked again.

I think this is bug for VS 2019. Try to close solution and re-open it.


4,383 3 3 gold badges 33 33 silver badges 51 51 bronze badges

I have tried almost all the solution mentioned above but it doesn't helped me. Trying to restart my PC solved my problem.


I tried lots of things but nothing worked for me until I found this post. He mentions a few things I have already tried that didn't work, but his final solution worked for me.

At the root of our solution there is a packages folder. I deleted the entire contents of this folder. Upon reopening Visual Studio, Intellisense and Go To Definition were restored to full working order.

7,266 14 14 gold badges 66 66 silver badges 105 105 bronze badges

close visual stdio For mac in your folder: do command + shift+ . you will see hidden files -> delete .vs folder open solution again


After working for a few months, Intellisense suddenly stopped. This cost me a lot of lost time! I've been worked with Visual Studio for about 10 years, and this problem happens occasionally in every version.

Here's what I tried for this iteration of the problem:

I thought I've finally solved the problem by following the advice from Homer. I deleted the packages folder at the base level of my project (somewhat nervously, as I wasn't sure if it was needed), and thought it had solved the problem, but no such luck.

However, one thing to watch out for - after doing this, Visual Studio recognised my classes but no longer recognised built-in ones (all the referenced namespaces at the top of my controllers were underlined in red). I then deleted the .vs folder (again), which seemed to solve the problem.

When I recompiled my solution, it gave a few CS0433 compilation errors with duplicate namespaces for the MinLength and MaxLength directives in some identity user name and password validation code. I got round this by removing the Microsoft.EntityFramework Nuget library (I had to also remove Microsoft.AspNet.Identity.EntityFramework too, since this depended on it), then adding them both back in, making sure to include at least version 6.2 of the former (otherwise I got another runtime error to do with the FirstOrDefaultAsync method called somewhere!).

My current situation: all existing Intellisense is working, but it's not recognising new classes I add unless I exit Visual Studio and go back in again. May have to live with this . unless anyone can help me?

Видимо доигрался я с метапрограммированием и 2015-я студия решила забить на анализ моего кода.
Итак, значит всё отлично работало, я делал свои штуки на шаблонах, студия почти всегда всё корректно подсвечивала разными цветами и давала подсказки. Иногда конечно тупила и подчёркивала ошибки там, где их нет, но в целом нормально.
Потом я решил начать добавлять в свою либу пространства имён, чтобы не захламлять глобальное пространство имён. Запихнул все метапрограммистические штуки в пространство имён Meta. Естественно всё полетело, возникла куча ошибок, как и ожидалось, потому что код, который всё это использовал, ещё не был исправлен. При таких кардинальных изменениях и intellisense мог давать сбой, поэтому я не удивился. Но когда я всё починил, и код стал нормально компилироваться, intellisense так и не ожил.
То есть всё белое (использую чёрную тему), не раскрашенное. Но в тоже время красным ничего не подчёркивается. Подсказки при вводе скобок, запятых и так далее не отображаются. При наведении мышью нет никаких всплывающих подсказок. GoTo Definition работает, но закидывает совсем не туда, куда надо - видимо просто поиск по слову срабатывает.
В статус баре студия пишет: IntelliSense: "Дополнительные сведения недоступны" (дальнейшие указания см. в справке "Устранение неполадок IntelliSense в проектах C++"). Справку смотрел, но решения проблемы в ней не нашёл.

Первое, что я попробовал - обновить студию с Update 3 до Update 4. Это же почти переустановка, если проблема в студии, то она должна была решиться. Апдейт как раз подоспел, а у меня руки не доходили потратить полдня на его установку. Обновил, не помогло. Потом сделал devenv /resetuserdata. Слетели все настройки, которые я так тщательно когда-то настраивал, особенно цвета семантической подсветки синтаксиса. Но опять не помогло. Пробовал удалять все временные файлы типа sdf и других. В конечном итоге решил, что надо пересоздавать проект и настроить его с нуля. Пересоздал, вставил туда свой код, опять подсветка пропала.
В других проектах IntelliSense отлично работает. Даже в том решении, где изначально IntelliSense слетел, есть тестовые проекты типа Hello World'а, где работает.
Видимо всё, что включает мои хидеры с шаблонной магией или чем-то её использующим, сразу же убивает IntelliSense.

Нужно понять, из-за чего именно такое происходит. Я же всего лишь запихнул шаблоны в пространство имён, ничего такого сложного не добавлял. К сожалению, чуть более старых версий исходников не осталось, чтобы проверить, правда ли всё из-за этого.

P.S. Просьба не злорадствовать, а помочь. От этого зависит судьба моей либы и моего движка, и мне очень важно решить эту проблему. Я бы мог перейти на какой-нибудь Eclipse CDT, но даже если там всё хорошо, это не поможет другим пользоваться моей библиотекой. Я ведь хочу, чтобы она была не только для меня.

gammaker
> Я бы мог перейти на какой-нибудь Eclipse CDT, но даже если там всё хорошо, это
> не поможет другим пользоваться моей библиотекой. Я ведь хочу, чтобы она была не
> только для меня.
Переходи не на IDE а на систему сборки. CMake, Waf и т.д.
CMake сейчас очень хорошо работает в связке Qt Creator'ом а он сам легко "подцепляет"
msvc компилятор и дебагер.

TheLightWay
> Переходи не на IDE а на систему сборки. CMake, Waf и т.д.
При чём тут системы сборки вообще? Народ же в основном использует студию. А в ней intellisense отваливается из-за кода, содержащегося в инклюдах. Чем тут системы сборки помогут людям, использующим студию?

Так, я нашёл минимальный код, который убивает intellisense:

Расширение компилятора __if_exists я использовал для реализации кое-какой штуки на шаблонах. Её можно сделать средствами чистого C++ и она работала в Clang и Visual Studio 2015, но не работала в Visual Studio 2013. По этому я директивами препроцессора сделал так, чтобы в студии использовался обходной вариант, использующий это расширение. Видимо этот код я написал непосредственно перед тем, как внедрять пространство имён и сразу не заметил того, что intellisense сломался.

gammaker
> При чём тут системы сборки вообще?
А ты про них почитай. Система сборки даст тебе и .sln разных версий
и еще много чего. Это то что нужно народу + тебе не придётся поддерживать кучу ide.
А IntelliSence я еще с Visual Studio 6.0 не полагался он бывало падает.
И кстати если проект <<Реально объемный>> то его MS VS IDE просто не выдержит это давно известно.
Системы сборки и как бонус генерации проектных файлов для разных ide это просто панацея + там еще
можно custom build step'ы делать (шёпотом:и забыть о твоей шаблоногрязи ) и они будут везде работать (при условии прямых рук)
Нужно просто набравшись терпения разобраться с выбранной системой сборки, а дальше только вперёд.
Да и к примеру git фигово всякие там солюшны держит не надёжно.

У вас системы сборки проектов подсвечивают синтаксис в файлах, проводят статический анализ и говорят об ошибках в коде? Я вот что-то не уверен.

romgerman
У нас системы сборки проектов позволяют очень гибко разбивать большие проекты
разделяя работу между сотрудниками а уж каждый грузит в свою (необходимую\любимою) ide
и там все видит. Еще раз системы сборки позволяют генерировать проектные файлы и
совсем не обязательно генерить их для всего проекта.
Курите Flow Development.

TheLightWay
> А ты про них почитай. Система сборки даст тебе и .sln разных версий
> и еще много чего. Это то что нужно народу + тебе не придётся поддерживать кучу ide.
Если большая часть народа пишет в студии, то она никуда не захочет переходить, особенно из-за какой-то моей либы. Даже если это будет легко благодаря системе сборки.
Ты вообще не по теме пишешь. Я ведь спрашивал, почему студия сломалась и как починить. Правда я уже сам нашёл проблему.

TheLightWay
> И кстати если проект <<Реально объемный>> то его MS VS IDE просто не выдержит
> это давно известно.
Ну так, 50К строк. Вроде отлично справляется, после того, как я убрал проблемные 2 строчки, вызывающие отвал IntelliSense.

TheLightWay
> шёпотом:и забыть о твоей шаблоногрязи
Какое система сборки имеет отношение к моим шаблонам вообще? Она что, умеет оперировать типами C++ во время компиляции? Нет, не умеет, это может делать только компилятор.

CMakeLists.txt я планирую написать, когда буду распространять свой проект, потому что так принято. А самому и в студии норм.

romgerman
> У вас системы сборки проектов подсвечивают синтаксис в файлах, проводят
> статический анализ и говорят об ошибках в коде? Я вот что-то не уверен.
+1

TheLightWay
> У нас системы сборки проектов позволяют очень гибко разбивать большие проекты
У меня эти шаблоны в самом ядре проекта. Какую часть проекта ни возьми, там будет инклюдиться хидер, использующий метапрограммирование. Метапрограммирование ведь нельзя спрятать в cpp, оно всегда в хидерах должно быть.
И весь проект у меня компилируется считанные секунды, поэтому разбивать его опять же нет смысла.

gammaker
Я про то что CMakeLists.txt даст тебе sln а не наоборот.
Про intellsence я сразу сказал он может слетать и вряд-ли тут
дистанционно угадаешь\поможешь
offtop:
А еще про то что CMake add_custom_target + phyton например уделает
твой метахидер и сохранит совместимость при желании даже с жутким старьём.
А тут твой пользователь должен будет обязан использовать крутой компилятор
В реальной жизни это может уткнутся в корпоративную ценовую политику типа:
"Большой Начяльник: "нафига вам msvs я не проггер но читал про бесплатный mingw и clang".

TheLightWay
> Я про то что CMakeLists.txt даст тебе sln а не наоборот.
Я в курсе. Но этот sln будет какой-то не такой, неродной.

TheLightWay
> В реальной жизни это может уткнутся в корпоративную ценовую политику типа:
> "Большой Начяльник: "нафига вам msvs я не проггер но читал про бесплатный mingw
> и clang".
В таком случае ещё лучше. GCC и Clang на несколько лет опережают студию по фичам. По идее должно работать в GCC 4.8, которая по умолчанию идёт во всех актуальных дистрибутивах Linux. А для тех у кого студия, у меня есть поддержка 2013+. Я думаю этого вполне достаточно, на 2013-то наверное уже почти все перелезть успели.

TheLightWay
> А еще про то что CMake add_custom_target + phyton например уделает
> твой метахидер и сохранит совместимость при желании даже с жутким старьём.
Он максимум заменит препроцессор, но не шаблоны. Он просто не в курсе структуры программы, и не знает где и какой шаблон инстанциировать. Он просто не может знать, потому что это C++ и его знает только компилятор C++.

gammaker
> в курсе. Но этот sln будет какой-то не такой, неродной.
Ты его готовить не умеешь. Во первых на время разработки
из CMake'а убераем install (можно через option) во вторых
генерим sln, когда надо добавить файл - редактируем нужный
CMakeLists.txt и делаем build для ZERO_CHECK метатаргета и солюшн
обновляется (надо reopen сделать).

> В таком случае ещё лучше. GCC и Clang на несколько лет опережают студию по
> фичам. По идее должно работать в GCC 4.8, которая по умолчанию идёт во всех
> актуальных дистрибутивах Linux.
Ну и как им быть с твоим "родным" .sln ?

> Он максимум заменит препроцессор, но не шаблоны. Он просто не в курсе структуры
> программы, и не знает где и какой шаблон инстанциировать. Он просто не может
> знать, потому что это C++ и его знает только компилятор C++.
Угу и Qtшный qmake не в курсе структуры но работает на гигантских проектищах типа Maya
и OpenCXX тож а уж про кучу тулов начиная с тупого bin2c.

CLion пробовали уже?
Пользуюсь на исходнике Erlang VM (чистый си) жрёт немного, кашляет из-за размера и количества макросов, но жрёт )
Крестопроекты пока не пробовал но поскольку она парсит с помощью кланга, думаю и кресты сожрёт точно так же.

QtCreator тоже неплох но мне кажется у него парсер свой поэтому на крестошаблонах может покашливать.

У студии единственная адекватная система парсинга на лету. У остальных всё нааамного хуже.

TheLightWay
> Ну и как им быть с твоим "родным" .sln ?
Есть куча вариантов.
1) Я сделаю CMakeLists.txt. Там всего наверное 5 строчек написать, чтобы просто все исходники скомпилились.
2) Я сделаю файл UnityBuild.cpp, который инклюдит все остальные *.cpp. Достаточно будет лишь указать компилятору путь к этому файлу и путь для инклюдов. Можно компилить как напрямую из командной строки, так и любую IDE настроить, чтобы она это делала.
3) Как 2, только вместо UnityBuild.cpp будет статическая либа.

Применительно к студии:
4) Инсталлятор LLVM автоматически добавляет интеграцию Clang в студию. То есть Clang можно использовать из студии без проблем. А там доступен весь C++11\14.
5) При установке студии 2015 можно отменить галочку установить Clang с Microsoft Codegen. Опять же весь C++14 будет доступен. Но для моей либы в принципе студии и без Clang'а достаточно.

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

kvakvs
> CLion пробовали уже?
Нет. Вроде говорят, что что-то с ним не так, не такая крутая IDE, как ожидалось. Да и платный он. Меня студия всем устраивает, да и Eclipse CDT тоже.

kvakvs
> QtCreator тоже неплох но мне кажется у него парсер свой поэтому на
> крестошаблонах может покашливать.
У креатора какой-то интерфейс нестандартный. Я решил, что я не хочу к нему привыкать, потому что есть студия и Eclipse. Я не нашёл, как там хотя бы цвета семантической подсветки синтаксиса настроить. В Eclipse и студии это сходу находится.

Читайте также: