예제 #1
0
        private void RunWSPBuilder()
        {
//            List<object> lo = (List<object>)o;
//          Project proj = (Project)lo[0];
//        string deployfolder = (string)lo[1];

            try
            {
                Log.LogMessageFromText("Building Solution Package", MessageImportance.High);
                // display parameters
                Log.LogMessageFromText("OutputFolder = " + OutputFolder, MessageImportance.High);

                //    string projectfile = BuildEngine.ProjectFileOfTaskNode;
                //  string projectfolder = projectfile.Substring(0, projectfile.LastIndexOf("\\");

                Log.LogMessageFromText("ProjectFolder = " + ProjectFolder, MessageImportance.High);


                Log.LogMessageFromText("AssemblyName = " + AssemblyName, MessageImportance.High);


                Log.LogMessageFromText("DeployFolder = " + DeployFolder, MessageImportance.High);


                // prepare deploy folder

                Directory.CreateDirectory(DeployFolder);


                // put the project output in the GAC

                File.Copy(ProjectFolder + OutputFolder + AssemblyName + ".dll", ProjectFolder + "GAC\\" + AssemblyName + ".dll", true);

                // copy files to help with deployment
                CopyFromInstallToDeploy("wspdeploy.exe");
                CopyFromInstallToDeploy("wspdeploy.lib.dll");
                CopyFromInstallToDeploy("cablib.dll");
                CopyFromInstallToDeploy("setup.exe");

                // Copy deployment config files

                File.Copy(ProjectFolder + "deploy\\setup.exe.config", DeployFolder + "setup.exe.config", true);
                File.Copy(ProjectFolder + "deploy\\eula.rtf", DeployFolder + "eula.rtf", true);


                // run wspbuilder

                string wspbuilderexe = WSPBuilderInstallPath + "WSPBuilder.exe";
                string args          = "-SolutionPath \"" + ProjectFolder.Substring(0, ProjectFolder.Length - 1) + "\" -Outputpath \"" + DeployFolder.Substring(0, DeployFolder.Length - 1) + "\" ";


                string commandline = "\"" + wspbuilderexe + "\" " + args;
                Log.LogCommandLine(MessageImportance.High, commandline);


                System.Diagnostics.ProcessStartInfo psi = new ProcessStartInfo(wspbuilderexe);
                psi.Arguments              = args;
                psi.UseShellExecute        = false;
                psi.CreateNoWindow         = true;
                psi.WorkingDirectory       = ProjectFolder;
                psi.RedirectStandardOutput = true;
                System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
                //Log.LogMessagesFromStream(p.StandardOutput, MessageImportance.High);

                p.WaitForExit();
                string output = p.StandardOutput.ReadToEnd();

                Log.LogMessageFromText(output, MessageImportance.High);

                if (!output.Contains("Done!"))
                {
                    throw new Exception("WSP Build did not complete.");
                }
            }
            catch (Exception ex)
            {
                Log.LogErrorFromException(ex, true);
            }
        }