C# ENVDTE-将新项目添加到现有解决方案中,并将其定位到特定文件夹中
我在VisualStudio2012上使用c#编写了一个VisualStudio向导模板 我遵循了MSDN的步骤:我创建了一个VS模板,然后我创建了一个类库项目,其中包含一个实现IWizard接口的类,我配置了.vstemplate文件,等等 在我的类库项目中,我从计算机的某个目录复制了一个现有的解决方案,我将新生成的项目添加到该解决方案中,并运行它 我是这样做的:C# ENVDTE-将新项目添加到现有解决方案中,并将其定位到特定文件夹中,c#,visual-studio-2012,solution,envdte,C#,Visual Studio 2012,Solution,Envdte,我在VisualStudio2012上使用c#编写了一个VisualStudio向导模板 我遵循了MSDN的步骤:我创建了一个VS模板,然后我创建了一个类库项目,其中包含一个实现IWizard接口的类,我配置了.vstemplate文件,等等 在我的类库项目中,我从计算机的某个目录复制了一个现有的解决方案,我将新生成的项目添加到该解决方案中,并运行它 我是这样做的: public void RunStarted(object automationObject, Dictionary<str
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");
}
public void RunStarted(对象自动对象、字典替换Dictionary、向导runKind runKind、对象[]customParams)
{
solutionDir=replacementsDictionary[“$solutiondirectory$”];
destProjectDir=replacementsDictionary[“$destinationdirectory$”];
projName=replacementsDictionary[“$specifiedsolutionname$”];
仿真目录=@“我的路径\TestSln”;
DirectoryCopy(仿真目录、解决方案目录);
dte=(DTE2)自动对象;
}
public void RunFinished()
{
溶液2溶液;
项目p;
溶液=(溶液2)dte溶液;
solution.Open(solutionDir+“\\TestSln.sln”);
p=solution.AddFromFile(destProjectDir+“\\”+projName+“.vcxproj”);
}
但是我必须将新项目添加到解决方案的特定子文件夹中:上面的代码直接将新项目添加到解决方案中,我想将其添加到solutionDir\apps中
你知道这样做的方法吗?
谢谢 您可以使用以下界面完成此操作:
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));
}
私有静态项目getSolutionSubFolder(Solution2解决方案,字符串子文件夹)
{
返回
解决方案
.项目
.Cast()
.第一道防线(
p=>string.Equals(p.Name,subfolder,StringComparison.Ordinal));
}
谢谢,@Yuriy。但是我们决定从2010年迁移到2010年,因此迁移到.vsz模板方法。现在我正在用Java脚本编写模板后面的代码,我仍然需要相同的代码。。。您有Java脚本的替代方案吗?