Даниил -
Переход от редактора к проекту - это многоэтапный процесс. Сначала вы получаете имя файла в редакторе, и оттуда вы можете найти содержащий проект.
Предполагая, что у вас есть IWPFTextView, вы можете получить имя файла, например:
public static string GetFilePath(Microsoft.VisualStudio.Text.Editor.IWpfTextView wpfTextView)
{
Microsoft.VisualStudio.Text.ITextDocument document;
if ((wpfTextView == null) ||
(!wpfTextView.TextDataModel.DocumentBuffer.Properties.TryGetProperty(typeof(Microsoft.VisualStudio.Text.ITextDocument), out document)))
return String.Empty;
// If we have no document, just ignore it.
if ((document == null) || (document.TextBuffer == null))
return String.Empty;
return document.FilePath;
}
Как только у вас есть имя файла, вы можете получить его родительский проект следующим образом:
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Interop;
public static Project GetContainingProject(string fileName)
{
if (!String.IsNullOrEmpty(fileName))
{
var dte2 = (DTE2)Package.GetGlobalService(typeof(SDTE));
if (dte2 != null)
{
var prjItem = dte2.Solution.FindProjectItem(fileName);
if (prjItem != null)
return prjItem.ContainingProject;
}
}
return null;
}
Из проекта вы можете добраться до модели кода, и я предполагаю, что ссылки, но мне еще не нужно было это делать.
Надеюсь, это поможет ...
~ Кэмерон