c# - ENVDTE - 将新项目添加到现有解决方案并将其定位在特定文件夹中

标签 c# visual-studio-2012 solution envdte

我在 Visual Studio 2012 上使用 C# 编写了一个 Visual Studio 向导模板。

我遵循了 MSDN 的步骤:我创建了一个 VS 模板,然后我创建了一个带有实现 IWizard 接口(interface)的类的类库项目,我配置了 .vstemplate 文件等等...

在我的类库项目中,我从计算机中的某个目录复制现有解决方案,将新生成的项目添加到该解决方案,然后运行它。

我这样做是这样的:

public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
        {
            solutionDir = replacementsDictionary["$solutiondirectory$"];
            destProjectDir = replacementsDictionary["$destinationdirectory$"];
            projName = replacementsDictionary["$specifiedsolutionname$"];
            EmulationDir = @"MY_PATH\TestSln";
            DirectoryCopy(EmulationDir, solutionDir);
            dte = (DTE2)automationObject;          

        }

public void RunFinished()
        {
            Solution2 solution;
            Project p;
            solution = (Solution2)dte.Solution;
            solution.Open(solutionDir + "\\TestSln.sln");

            p = solution.AddFromFile(destProjectDir + "\\" + projName + ".vcxproj");

        }

但我必须将新项目添加到解决方案的特定子文件夹中:上面的代码直接将新项目添加到解决方案中,我想将它添加到 solutionDir\apps。

你知道有什么方法可以这样做吗? 谢谢!!

最佳答案

您可以使用 SolutionFolder 完成此操作界面:

Project project = getSolutionSubFolder(solution, "SubFolderName");
if (project != null)
{
    SolutionFolder folder = (SolutionFolder)project.Object;
    folder.AddFromFile("yourProjectFilePath");
}

getSolutionSubFolder 方法如下所示:

private static Project getSolutionSubFolder(Solution2 solution, string subfolder)
{
    return 
        solution
            .Projects
            .Cast<Project>()
            .FirstOrDefault(
            p => string.Equals(p.Name, subfolder, StringComparison.Ordinal));
}

关于c# - ENVDTE - 将新项目添加到现有解决方案并将其定位在特定文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992677/

相关文章:

visual-studio-2010 - 从另一个程序(不是加载项)打开 DTE 解决方案

c# - 将 System.Drawing.Point 传递给 MVC Controller

c# - HTTP HEAD 响应 - 设置 Content-Length

c# - ReSharper 的快速修复命令的名称是什么

visual-studio-2010 - Visual Studio 2010 解决方案问题

C 中凯撒代码的结果附加字母

c# - 按列循环数据表

c# - Convert.ToString() 中的条件表达式评估错误?

visual-studio-2012 - 用于 Visual Studio 2012 更新 3 的 MySQL 连接器

visual-studio - 在 Xamarin 项目中可视化编辑 XAML 文件。 Visual Studio 2012