簡體   English   中英

ENVDTE - 將新項目添加到現有解決方案並將其定位到特定文件夾中

[英]ENVDTE - Add new project to existing solution and locate it in a specific folder

我在visual studio 2012上使用c#編寫了一個Visual Studio向導模板。

我遵循MSDN步驟:我創建了一個VS模板,然后我創建了一個類庫項目,其中包含一個實現IWizard接口的類,我配置了.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));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM