Я разрабатываю код gen (VSIX) для своей команды, и я намерен использовать Roslyn в качестве основного движка после того, как я борюсь с инфраструктурой расширяемости VSIX.Roslyn: Получить текущий проект/Получить текущий документ, который выбран
Мой код gen в настоящее время способен генерировать новый csproj для решения и способен выводить базу шаблонных кодов на основе проекта Templating из расширяемости VSIX. Поскольку я амбициозен, я стараюсь не полагаться на статический шаблонный проект и использовать Roslyn, чтобы вместо этого использовать код.
У моего решения есть список папок, и каждая папка имеет список csproj.
Мой вопрос 1 Я пытаюсь использовать API-интерфейс Roslyn Workspace для обнаружения текущего документа (.cs), который был открыт в редакторе кода, или я пытаюсь получить текущий идентификатор документа выбранного файла cs, который я делаю правой кнопкой мыши из проводника решений.
Я попытался использовать AdhocWorkspace, которое до сих пор провалилось, поскольку я не могу его получить.
Вопрос 2. Если я должен использовать AdhocWorkspace, могу ли я изменить пространство имен по умолчанию в свойствах csproj? Или это не было частью функциональности в API Roslyn Workspace на данный момент?
Спасибо.
Предполагая, что вы используете VS2015, вы должны использовать [ 'VisualStudioWorkspace'] (https://joshvarty.wordpress.com/2014/09/12/learn-roslyn-now-part-6- работоспособного с-рабочими пространствами /). Это то, что использует VS под капотом. Вы можете использовать ['GetOpenDocumentIds()'] (http://source.roslyn.io/#Microsoft.CodeAnalysis.Workspaces/Workspace/Workspace_Editor.cs,356559a2f4bb0d36). Вы также должны учитывать, что сразу можно открыть несколько документов. (например, сплит-панели) – JoshVarty
@JoshVarty: не поддерживает ли API API неактивные вкладки? – SLaks
Да, да. Нет понятия «последняя открытая вкладка» на уровне рабочей области (насколько я могу судить), поэтому, вероятно, требуется ['GetOpenDocumentInCurrentContext'] (http://source.roslyn.io/#Microsoft.CodeAnalysis.Workspaces/Workspace/ TextExtensions.cs, 7d8ce0f29a31ba83). 'SourceTextContainer' можно найти из' IWpfTextView' или 'ITextBuffer' через: http://source.roslyn.io/#Microsoft.CodeAnalysis.EditorFeatures.Text/Extensions.cs – JoshVarty