IDM_VS_MENU_EXTENSIONS не определено в команде меню VSIX - PullRequest
0 голосов
/ 18 апреля 2020

(Название немного вводит в заблуждение, но другие люди могут столкнуться с той же проблемой, поэтому название этой проблемы является наиболее описательным, поскольку почти никто не будет искать правильную ссылку на инструменты сборки в файле C# для неопределенная константа меню расширений, когда сталкиваюсь с проблемой, как и я.)

Эта проблема определяется здесь . Проблема закрыта, хотя я добавил комментарий через несколько минут go, однако реальный вопрос другой, поэтому задаю его здесь.

Я создал VSIX (Visual Studio Extension Project) в Visual Studio 2019 Я также добавил Custom Command, который теперь называется Command. В новом проекте VSIX go до Add > New Item > Extensibility > Command. После того, как вы нажмете кнопку «ОК», вы получите среди других файлов файл с расширением vsct. Стоит отметить, что проект / решение C#, а не C++. Тем не менее, VSCT включает в себя заголовочный файл, что не так очевидно. В конце концов, я имею дело с C#.

Я сталкивался с той же проблемой и страдал, пока не решил открыть командную строку, и с root моего C:\ диска я ввел dir vsshlids.h /s. Я получил довольно много хитов. Среди них были:

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VSSDK\VisualStudioIntegration\Common\Inc\vsshlids.h

и

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VSSDK\VisualStudioIntegration\Common\Inc\vsshlids.h

Были и другие места. Если я поменяю следующую строку:

Оригинал

<!--This header contains the command ids for the menus provided by the shell. -->
<Extern href="vsshlids.h"/>

Обновление

<!--This header contains the command ids for the menus provided by the shell. -->
<Extern href="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VSSDK\VisualStudioIntegration\Common\Inc\vsshlids.h"/>

, проект будет построен хорошо. Это означает, что Visual Studio 2019 по умолчанию не использует инструменты сборки Visual Studio 2019. Вы должны указать это, чтобы использовать это.

Здесь определяется меню в файле VCST.

<!-- In this section you can define new menu groups. A menu group is a container for
     other menus or buttons (commands); from a visual point of view you can see the
     group as the part of a menu contained between two lines. The parent of a group
     must be a menu. -->
<Groups>
  <Group guid="guidTesterVsix2019PackageCmdSet" id="MyMenuGroup" priority="0x0600">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EXTENSIONS"/>
  </Group>
</Groups>

Я просто заменил IDM_VS_MENU_TOOLS на IDM_VS_MENU_EXTENSIONS, оставив остальные по умолчанию. Эти две страницы, one и two , покажут вам, как создать проект VSIX с меню для всех, кто хочет следовать. Интересно, что новый проект, шлепающий в VS2019, идет вразрез с рекомендациями Microsoft и ставит меню под Tools, а не Extensions, тем самым не раскрывая проблему более широкой аудитории.

Я попытался добавить INCLUDE переменная, которая не работала, не то, чтобы мне нравился этот параметр в любом случае.

Эта Microsoft страница довольно неплохо излагает The MSVC command-line tools use the PATH, TMP, INCLUDE, LIB, and LIBPATH environment variables.... Я использую GUI, а именно right click on solution and select build.

Этот ТАК вопрос задает тот же вопрос. Ответ указывает на статью GitHub , упомянутую выше. Вопрос был / определенно действителен, просто не был правильным вопросом. Я почти уверен, что другие люди, столкнувшиеся с этой проблемой, имели ту же проблему, а именно, где VS2019 пошел в неправильный файл, но в C#, что не очевидно.

Как мне сказать Visual Studio 2019 использовать в проекте C# VSIX инструменты сборки Visual Studio 2019 (через IDE, хотя я должен иметь возможность выполнять сборку из командной строки с помощью утилиты сборки) без жесткого кодирования полного пути?

...