C# 在VisualStudio中获取活动项目

C# 在VisualStudio中获取活动项目,c#,visual-studio,visual-studio-2008,C#,Visual Studio,Visual Studio 2008,在VisualStudio插件中,我试图获取当前活动的 项目 我在网上找到了一些关于使用DTE.ActiveSolutionProject的帖子。 该函数为我提供了可以投射到的对象和数组 项目对象--但它总是给我相同的项目, 不管我在IDE中作为当前解决方案加载了什么。 数组中总是有一个元素,而且总是相同的 元素 还有别的办法找到这个项目吗 --Paul事实证明,我的ActiveSolutionProjects做了我想做的事情——除了 它在运行VS2008的调试实例时提供虚假信息。 如果插件直接

在VisualStudio插件中,我试图获取当前活动的 项目

我在网上找到了一些关于使用DTE.ActiveSolutionProject的帖子。 该函数为我提供了可以投射到的对象和数组 项目对象--但它总是给我相同的项目, 不管我在IDE中作为当前解决方案加载了什么。 数组中总是有一个元素,而且总是相同的 元素

还有别的办法找到这个项目吗


--Paul

事实证明,我的ActiveSolutionProjects做了我想做的事情——除了 它在运行VS2008的调试实例时提供虚假信息。
如果插件直接加载到VS2008中,我会得到正确的信息。

我使用了上一篇文章中的代码。放松点,不需要SharePoint工作。我将在这里显示代码,但最好阅读本文,了解项目文件中可能需要的一些更改的信息

internal static Project GetActiveProject()
{
    DTE dte = Package.GetGlobalService(typeof(SDTE)) as DTE;
    return GetActiveProject(dte);
}

internal static Project GetActiveProject(DTE dte)
{
    Project activeProject = null;

    Array activeSolutionProjects = dte.ActiveSolutionProjects as Array;
    if (activeSolutionProjects != null && activeSolutionProjects.Length > 0)
    {
        activeProject = activeSolutionProjects.GetValue(0) as Project;
    }

    return activeProject;
}

如果需要
对象
请使用:
DTE.ActiveSolutionProjects(0.Object)