views:

321

answers:

3

I have a huge set of .vcproj files (~200) stored in different locations. I have a list of these files with full paths. How can i automatically add them to the solution file(.sln) ?

UPD: I'm looking for existing tool/method.

A: 

The .vcproj & .sln files are ascii format, so you could write a macro/script/program to run through your list of projects and insert the proper info into the .sln file. The only additional info you'll need to get about the projects is the project GUID, which can be found in the .vcproj file (assuming your build configurations are the same for each project).

Todd Benning
that's correctbut i was looking for existing solution )
+1  A: 

Here's how I'd do it:

  1. Create and save a blank solution to insert the vcproj files into (File->New Project->Other Project Types->Visual Studio Solutions->Blank Solution)

  2. Create a VS macro which adds a project to a solution, saves the solution, and exits. Try the following:

    Public Sub AddProjectAndExit(Optional ByVal vcprojPath As String = "")
        If Not String.IsNullOrEmpty(vcProjPath) Then
            DTE.ExecuteCommand("File.AddExistingProject", vcprojPath)
            DTE.ExecuteCommand("File.SaveAll")
            DTE.ExecuteCommand("File.Exit")
        End If
    End Sub
    
  3. Create a batch script which executes this macro from the Visual Studio command prompt, iterating over each of your .vcproj files. The command for a single execution would be:

    devenv.exe BlankSolution.sln /Command "Macros.MyMacros.Module1.AddProjectAndExit MyProject1.vcproj"
    

Hope that helps!

snowcrash09
A: 

Modify and existing vcwizard.

function CreateCustomProject(strProjectName, strProjectPath)
{
    try
    {
            //This will add the default project to the new solution

            prj = oTarget.AddFromTemplate(strProjTemplate, strProjectPath, strProjectNameWithExt);


            //Create a loop here to loop through the project names
//you want to add to the new solution.
            var prjItem = oTarget.AddFromFile("C:\\YourProjectPath\\YourProject.vcproj", false);


        }
        return prj;
    }
    catch(e)
    {
        throw e;
    }
}
Marcus