Пользовательское расширение Intellisense

Я хочу написать дополнение к intellisense в Visual Studio.

Можно ли вообще расширить, из моих исследований я не нашел никаких образцов или документации по расширениям intellisense.

Как я могу получить intellisense, чтобы показать простое сообщение HelloWorld, подобное следующему (где hello world добавляется во время выполнения к intellisense для String):

enter image description here

 Jason Malinowski06 мая 2012 г., 07:18
Также очень помог бы пример того, что вы хотели бы добавить в Intellisense. Существует ряд различных методов, которые могут потребоваться ...
 Luke McGregor06 мая 2012 г., 07:28
@JasonMalinowski Я добавил немного более подробно о том, что я делаю, это информация, которую вы ищете? У меня возникли некоторые проблемы с формулировкой этого вопроса, так как я понятия не имею, с чего начать с кода программы, поэтому любые советы по формулировке этого лучше бы получили высокую оценку
 Luke McGregor05 мая 2012 г., 10:37
@oded ive только что провел несколько часов, просматривая Google, MSDN и т. д., и вообще не смог ничего найти по расширению intellisense. У вас есть какие-либо рекомендации о том, где его искать?
 Oded05 мая 2012 г., 10:39
Извините, Люк, я неVisual Studio Extensibility forum было бы хорошим отправным пунктом. Но тыcould Перефразируйте вопрос, чтобы не просить ссылки и на самом деле быть вопросом программирования по теме.

Ответы на вопрос(1)

Решение Вопроса

в Visual Studio 2010 и более поздних версиях API-интерфейсы расширяемости, которые вы хотите использовать, находятся в пространстве имен Microsoft.VisualStudio.Languages.IntelliSense. На высоком уровне вы хотите, чтобы MEF экспортировалICompletionSourceProvider который обеспечит предметы, которые вам нужны. Есть два хороших сообщения в блогеВот а такжеВот которые демонстрируют основную технику.

Есть две проблемы, с которыми вы столкнетесь, если хотите сделать свой скриншот реальностью. (Вот почему я попросил сценарий, так как мой совет здесь изменился бы.) Во-первых, этот метод юридически не позволяет вам добавлять к существующему набору завершений, а скорее предоставляет новый. В пользовательском интерфейсе это отображается в виде двух вкладок, например вкладок «Общее / все» в редакторе Visual Basic. Это ограничение текущего API. Вы можете попытаться изменить один из существующих наборов завершений в вашемAugmentCompletionSource но я понятия не имею, сработает ли это. В любом случае это определенно не поддерживается.

Во-вторых, очень трудно понять, когда и где что-то рекомендовать. В своем примере вы сказали «IntelliSense дляstring& Quot ;. К сожалению, в VS нет никаких API (в настоящее время), которые позволили бы вам знать, что есть до точки. Вы можете выполнить простую эвристику или попытаться реализовать какой-нибудь синтаксический анализатор Good Enough & # x2122; для вашего сценария, но на данный момент вам придется принять, что вы не получите идеальных результатов.

Рослин Проект направлен на устранение второй проблемы, поэтому вам может быть полезно изучить ее немного подробнее. Поскольку мы ожидаем, что многие люди захотят продлить завершение, мы также подумываем о том, чтобы предложить другие API расширяемости, поэтому вам не придется бросатьICompletionSourceProvider с нуля, но таких API нет в текущем CTP.

[Отказ от ответственности: я являюсь членом команды Roslyn, которая работает на IntelliSense.]

 15 апр. 2014 г., 04:57
Ссылка на Roslyn ведет на один из блогов, на которые вы ссылаетесь выше. Я предполагаю, что вы хотите дать ссылку наmsdn.microsoft.com/en-us/vstudio/roslyn.aspx?
 27 мар. 2013 г., 12:16
@JasonMalinowski Я разместил вопрос здесьstackoverflow.com/questions/15657525/…
 Luke McGregor10 мая 2012 г., 06:30
Спасибо, я уверен, что это то, что им нужно, это настоящий позор, что у вас нет доступа к материалам до того, что API должен быть где-то там, чтобы обычная VS intellisense работала, так что это печально, что это не публично. Я раньше использовал материал Roslyn, так что я попробую кое-что с этим разобраться, что это за предмет
 27 мар. 2013 г., 01:48
@ Джейсон, я пытался добавить еще один intellisense для JavaScript[Order(Before = "High")] [Export(typeof(ICompletionSourceProvider)), ContentType("JavaScript"), Name("EnhancedJavaScriptCompletion")] internal sealed class JavaScriptCompletionSourceProvider : ICompletionSourceProvider { }   но он не шагает в отладчик, хотя точки останова выглядят так, как будто код загружен. Не могли бы вы мне помочь?
 27 мар. 2013 г., 05:11
@DotNetWise: вы должны создать новый вопрос, чтобы другие могли ответить на этот вопрос. ;-)

Ваш ответ на вопрос