(Название немного вводит в заблуждение, но другие люди могут столкнуться с той же проблемой, поэтому название этой проблемы является наиболее описательным, поскольку почти никто не будет искать правильную ссылку на инструменты сборки в файле 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, хотя я должен иметь возможность выполнять сборку из командной строки с помощью утилиты сборки) без жесткого кодирования полного пути?