Visual Studio向导 - 无法将项目项添加到正确的文件夹中

时间:2014-10-15 18:58:33

标签: c# visual-studio visual-studio-sdk

我正在尝试创建自定义Visual Studio向导来创建生成的代码。

一切正常但唯一的问题是项目文件不会保存在右侧文件夹中。我正确点击了一个项目文件夹并选择了“新项目...”。但是向导会将文件保存在项目根目录中。

代码:

public class ProcedureClass : IDTWizard
{
    public void Execute(object Application, int hwndOwner, ref object[] ContextParams, ref object[] CustomParams, ref EnvDTE.wizardResult retval)
    {
        // Showing wizard dialog and generating code here...

        var projectItems = ContextParams[2] as ProjectItems;
        var project = projectItems.ContainingProject;
        retval = wizardResult.wizardResultSuccess;

        project.ProjectItems.AddFromTemplate(tempFile, ContextParams[4]);
    }
}

这是一张图片,显示我点击的位置以及文件的创建位置:

Screenshot

1 个答案:

答案 0 :(得分:1)

这是预期的,因为您的代码使用projectItems.ContainingProject,它始终返回根项目。 看我的文章

HOWTO:从Visual Studio .NET宏或加载项导航解决方案的文件 http://www.mztools.com/articles/2006/MZ2006004.aspx

正确的代码是:

  • 获取projectItems.Parent,它是一个对象,而后者又可以是EnvDTE.Project或EnvDTE.ProjectItem。
  • 如果是EnvDTE.Project,请使用Project.ProjectItems.AddFromTemplate(..)
  • 如果是EnvDTE.ProjectItem,请使用ProjectItem.ProjectItems.AddFromTemplate(...)