Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio向导-赢得';t将项目项添加到正确的文件夹中_C#_Visual Studio_Visual Studio Sdk - Fatal编程技术网

C# Visual Studio向导-赢得';t将项目项添加到正确的文件夹中

C# Visual Studio向导-赢得';t将项目项添加到正确的文件夹中,c#,visual-studio,visual-studio-sdk,C#,Visual Studio,Visual Studio Sdk,我正在尝试创建自定义Visual Studio向导以创建生成的代码 一切正常,但唯一的问题是项目文件不会保存在正确的文件夹中。我右键单击项目文件夹并选择“新建项…”,但向导将文件保存在项目根目录中 守则: public class ProcedureClass : IDTWizard { public void Execute(object Application, int hwndOwner, ref object[] ContextParams, ref object[] Custo

我正在尝试创建自定义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]);
    }
}
下图显示了我单击的位置和创建文件的位置:


如果代码使用projectItems.ContainingProject,则这是预期的,它始终返回根项目。 见我的文章

如何:从Visual Studio.NET宏或加载项导航解决方案的文件

正确的代码是:

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

ProjectItems.Parent给了我所需要的东西。