private bool BuildBar()
{
bool success = true;
try
{
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("VSNDK");
key.SetValue("Run", "True");
key.Close();
_buildEvents.OnBuildDone += new _dispBuildEvents_OnBuildDoneEventHandler(this.OnBuildDone);
try
{
Solution2 soln = (Solution2)_dte.Solution;
List<String> buildThese = new List<String>();
_targetDir = new List<string[]>();
foreach (String startupProject in (Array)soln.SolutionBuild.StartupProjects)
{
foreach (Project p1 in soln.Projects)
{
if (p1.UniqueName == startupProject)
{
buildThese.Add(p1.FullName);
ConfigurationManager config = p1.ConfigurationManager;
Configuration active = config.ActiveConfiguration;
foreach (Property prop in active.Properties)
{
try
{
if (prop.Name == "OutputPath")
{
string[] path = new string[2];
path[0] = p1.Name + "_" + _isSimulator.ToString();
path[1] = prop.Value.ToString();
_targetDir.Add(path);
break;
}
}
catch
{
}
}
break;
}
}
}
_hitPlay = true;
_amountOfProjects = buildThese.Count; // OnBuildDone will call build() only after receiving "amountOfProjects" events
foreach (string projectName in buildThese)
soln.SolutionBuild.BuildProject("Debug", projectName, false);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
success = false;
}
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
success = false;
}
return success;
}