Расширение Visual Studio: как получить значение $ macro? - PullRequest
0 голосов
/ 16 февраля 2020

Я пишу расширение для Visual Studio 2019, и мне нужно разрешить значения макросов решения / проекта, например, $(ProjectDir) и $(SolutionDir). Есть ли способ сделать это из расширения?

1 Ответ

0 голосов
/ 17 февраля 2020

Мне нужно разрешить значения макросов решения / проекта, например, $ (ProjectDir) и $ (SolutionDir). Есть ли способ сделать это из расширения?

Насколько я знаю, ProjectDir и SolutionDir - это просто свойства MSBuild , и если вы хотите использовать $() чтобы получить значения ProjectDir и SolutionDir, они могут быть распознаны только с помощью MSBuild tool , а не vsix api . Использование $ для получения значений свойств может использоваться только в MSBuild.

Чтобы получить значения $(ProjectDir) и $(SolutionDir) напрямую, я предлагаю вам просто использовать Интерфейс EnvDTE для получения значений, и его также можно использовать в VS2019.

Решение

1) попытаться сослаться на EnvDTE.dll, существующее в C:\Program Files (x86)\Microsoft Visual Studio\2019\xxxx(Community/Professional/Enterprise)\Common7\IDE\PublicAssemblies.

2) используя пространство имен using EnvDTE;

3) добавить этот код в проект, который получит значения напрямую.

 DTE dTE = Package.GetGlobalService(typeof(DTE)) as DTE;
 string solutiondir = dTE.Solution.FileName;  // the value of $(SolutionDir)
 Project project = dTE.Solution.Projects.Item(1);
 string projectdir = project.FileName; // the value of $(projectdir)

Результат равен значениям $ (ProjectDir) и $ (SolutionDir) в msbuild.

...