Какой тип расширения для VS (и как) сделать, чтобы генерировать код C # или C ++ из некоторого текста [в большей степени, модели]? - PullRequest
0 голосов
/ 25 июля 2011

Я новичок в Visual Studio Extensibility и хочу создать дополнение / расширение, которое должно выполнять следующие действия:

  1. Он должен читать все файлы с определенным расширением (предположим, что "* .ump").
  2. Он должен обрабатывать текст / код / ​​что угодно в файлах.
  3. Он должен создать новый файл Class / Code с некоторым кодом в нем. [Код будет создан на шаге 2, просто нужно знать, как это сделать?]

Тем не менее, я ломал голову над расширяемостью, видел генераторы одного файла ... и надстройки, которые проходят через ProjectItems и могут определять расширение файла, Но я не был в состоянии найти полное руководство, руководство или объяснение того, как и что делать !!

Пожалуйста, помогите ...

1 Ответ

0 голосов
/ 25 июля 2011
  1. Вы не хотите читать все файлы с определенным расширением в проекте Visual C ++ или в стандартном проекте Visual C #. Вы можете сделать это с помощью созданного вручную проекта MSBuild (включенного в решение).
  2. В проектах Visual C ++ существует способ определения пользовательских инструментов. Они запускаются как отдельные процессы, поэтому вы можете реализовать их как угодно. Studio спросит вас, хотите ли вы определить инструмент (они определены в специальных файлах XML; в студии есть диалог для их редактирования), когда вы добавите файл с неизвестным расширением. В проектах Visual C # просто вручную напишите задачи MSBuild и вставьте их в проект.
  3. Делай что хочешь. IIRC сгенерированные файлы должны быть включены в проект, хотя. Что касается MSBuild, просто настройте проект по своему желанию, но в Visual C ++ они должны.
  4. Вы можете объединить проекты MSBuild (csproj, vbproj) и VisualC ++ в одном решении, поэтому я рекомендую использовать отдельные.
  5. Если вы когда-нибудь обнаружите, что вам нужно скомпилировать для другой цели, где вы не можете использовать Visual Studio, вы будете рады, что у вас есть автономный инструмент, который вы только что вызывали из Studio, а не что-то, что в него встроено.
...