我正在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"文件夹是空的,我希望它从现在开始包含新生成的项目。
你知道怎么办吗?谢谢!
答案 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;
}
}
谢谢大家的帮助:)