使用ENVDTE时的Java脚本 - 将新项目添加到现有解决方案并在特定子文件夹中找到它

时间:2014-04-13 12:17:45

标签: javascript c++ wizard solution envdte

我正在Visual Studio 2010上编写新的c ++项目模板的Visual Studio扩展。我是通过.vsz模板的方法来完成的。我根据需要扩展了default.js代码。在OnFinish(selProj,selObj)函数中,我将现有解决方案从计算机中的某个目录复制到当前解决方案目录,我将新生成的项目添加到该解决方案中,然后运行它。

我这样做:

function OnFinish(selProj, selObj) {

    try
    {
        var strProjectPath = wizard.FindSymbol('PROJECT_PATH');
        var strProjectName = wizard.FindSymbol('PROJECT_NAME');


        selProj = CreateCustomProject(strProjectName, strProjectPath);
        AddConfig(selProj, strProjectName);
        AddFilters(selProj);

        var InfFile = CreateCustomInfFile();
        AddFilesToCustomProj(selProj, strProjectName, strProjectPath, InfFile);
        PchSettings(selProj);
        InfFile.Delete();

        selProj.Object.Save();



        debugger;
        //My Added Code
        var strSolutionPath = strProjectPath + "\\..";
        var EmulationPath = "C:\\Users\\username\\Desktop\\TestSln";
        var TreePath = strSolutionPath + "\\apps";
        var fso = new ActiveXObject("Scripting.FileSystemObject");

        fso.CopyFolder(EmulationPath, strSolutionPath);

        var Solution = dte.Solution;
        Solution.Open(strSolutionPath + "\\TestSln.sln");

        var p = Solution.AddFromFile(strProjectPath + "\\" + strProjectName + ".vcxproj"); 


    }
    catch(e)
    {
        if (e.description.length != 0)
            SetErrorInfo(e);
        return e.number
    }
}

但是我必须将新项目添加到解决方案的特定子文件夹中:上面的代码直接将新项目添加到解决方案中,我想将它添加到solutionDir \ apps中。 BTW," apps"文件夹是空的,我希望它从现在开始包含新生成的项目。

你知道怎么办吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了自己的方式:

for (var i = 1; i <= solution.Projects.Count; i++) 
        {
            if(Solution.Projects.Item(i).Name == "apps")        
            {
                appsFolder = Solution.Projects.Item(i);
                project = appsFolder.Object.AddFromFile(newProjectPath + "\\" + strProjectName + "\\" + strProjectName + ".vcxproj");
                break;
            }
        }

谢谢大家的帮助:)