gpt4 book ai didi

.net - 从 Visual Studio MEF 编辑器扩展访问项目系统

转载 作者:行者123 更新时间:2023-12-04 22:52:28 27 4
gpt4 key购买 nike

我正在使用 VS 2010 SDK RC 编写 Visual Studio 编辑器扩展。我希望能够弄清楚当前项目的引用是什么。如何访问与当前编辑器对应的项目?

documentation on editor extensions似乎不包含有关如何访问 Visual Studio 的非编辑器部分的信息。我做了一些搜索,看起来在 VS2008 中您可以编写可以访问项目系统的加载项,但我正在尝试从 MEF 编辑器扩展中获取此功能。

最佳答案

丹尼尔——

从编辑器到项目是一个多步骤的过程。首先,您在编辑器中获取文件的文件名,然后您可以从那里找到包含的项目。

假设你有一个 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;
}

从项目中,您可以访问代码模型,我假设引用,但我还不需要这样做。

希望这可以帮助...

~ 卡梅伦

关于.net - 从 Visual Studio MEF 编辑器扩展访问项目系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489448/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com