/// <summary>
/// Add Bar Descriptor to each project.
/// </summary>
private void AddBarDescriptor()
{
try
{
DTE dte = _applicationObject as DTE;
Projects projs = dte.Solution.Projects;
List<Project> projList = new List<Project>();
foreach (Project proj in projs)
{
projList.Add(proj);
}
while (projList.Count > 0)
{
Project proj = projList.ElementAt(0);
projList.RemoveAt(0);
Configuration config;
Property prop;
try
{
config = proj.ConfigurationManager.ActiveConfiguration;
prop = config.Properties.Item("ConfigurationType");
}
catch
{
config = null;
prop = null;
}
if (prop == null)
{
if (proj.ProjectItems != null)
{
foreach (ProjectItem projItem in proj.ProjectItems)
{
if (projItem.SubProject != null)
projList.Add(projItem.SubProject);
}
}
continue;
}
if (Convert.ToInt16(prop.Value) != Convert.ToInt16(ConfigurationTypes.typeApplication))
continue;
if (config.PlatformName != BLACKBERRY && config.PlatformName != BLACKBERRYSIMULATOR)
continue;
ProjectItem baritem = proj.ProjectItems.Item(BAR_DESCRIPTOR);
string n = proj.Name;
if (baritem == null)
{
tokenProcessor = new TokenProcessor();
Debug.WriteLine("Add bar descriptor file to the project");
string templatePath = dte.Solution.ProjectItemsTemplatePath(proj.Kind);
templatePath += BAR_DESCRIPTOR_PATH + BAR_DESCRIPTOR;
tokenProcessor.AddReplace(@"[!output PROJECT_NAME]", proj.Name);
string destination = System.IO.Path.GetFileName(templatePath);
// Remove directory used in previous versions of this plug-in.
string folder = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(proj.FullName), proj.Name + "_barDescriptor");
if (Directory.Exists(folder))
{
try
{
Directory.Delete(folder);
}
catch (Exception e)
{
}
}
folder = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(proj.FullName), "BlackBerry-" + proj.Name);
System.IO.Directory.CreateDirectory(folder);
destination = System.IO.Path.Combine(folder, destination);
tokenProcessor.UntokenFile(templatePath, destination);
ProjectItem projectitem = proj.ProjectItems.AddFromFile(destination);
}
}
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
}
}