private void GetWebResources(string connString)
        {
            DisplayStatusMessage("Connecting to CRM and getting web resources");
            string projectName = ((ComboBoxItem)Projects.SelectedItem).Content.ToString();

            _projectFiles = new List<ComboBoxItem>();
            _projectFiles = GetProjectFiles(projectName);

            _projectFiles.Insert(0, new ComboBoxItem() { Content = String.Empty });

            CrmConnection connection = CrmConnection.Parse(connString);
            using (OrganizationService orgService = new OrganizationService(connection))
            {
                QueryExpression query = new QueryExpression
                {
                    EntityName = "webresource",
                    ColumnSet = new ColumnSet("name", "webresourcetype"),
                    Criteria = new FilterExpression
                    {
                        Conditions =
                        {
                            new ConditionExpression
                            {
                                AttributeName = "ismanaged",
                                Operator = ConditionOperator.Equal,
                                Values = { false }
                            }
                        }
                    }
                };

                EntityCollection results = orgService.RetrieveMultiple(query);
                List<WebResourceItem> wrItems = new List<WebResourceItem>();
                foreach (var entity in results.Entities)
                {
                    WebResourceItem wrItem = new WebResourceItem
                    {
                        Publish = false,
                        WebResourceId = entity.Id,
                        Name = entity.GetAttributeValue<string>("name"),
                        Image = GetWebResourceImageByNumber(entity.GetAttributeValue<OptionSetValue>("webresourcetype").Value.ToString()),
                        Type = entity.GetAttributeValue<OptionSetValue>("webresourcetype").Value,
                        ProjectFiles = _projectFiles
                    };
                    wrItem.PropertyChanged += WebResourceItem_PropertyChanged;
                    wrItems.Add(wrItem);
                }

                CreateFilterList(results);
                wrItems = HandleMappings(wrItems);
                WebResourceGrid.ItemsSource = wrItems;
                WebResourceGrid.IsEnabled = true;
                WebResourceType.IsEnabled = true;
                DisplayStatusMessage(String.Empty);
            }
        }
        private void AddOrUpdateMapping(WebResourceItem item)
        {
            CrmConn conn = (CrmConn)Connections.SelectedItem;
            var project = (Project)((ComboBoxItem)Projects.SelectedItem).Tag;
            var projectPath = Path.GetDirectoryName(project.FullName);
            XmlDocument doc = new XmlDocument();
            doc.Load(projectPath + "\\CRMDeveloperExtensions.config");

            //Update or delete existing mapping
            XmlNodeList fileNodes = doc.GetElementsByTagName("File");
            if (fileNodes.Count > 0)
            {
                foreach (XmlNode node in fileNodes)
                {
                    XmlNode orgId = node["OrgId"];
                    if (orgId != null && orgId.InnerText.ToUpper() != conn.OrgId.ToUpper()) continue;

                    XmlNode webResourceId = node["WebResourceId"];
                    if (webResourceId != null && webResourceId.InnerText.ToUpper() !=
                        item.WebResourceId.ToString().ToUpper().Replace("{", String.Empty).Replace("}", String.Empty))
                        continue;

                    if (string.IsNullOrEmpty(item.BoundFile))
                    {
                        //Delete
                        var parentNode = node.ParentNode;
                        if (parentNode != null)
                            parentNode.RemoveChild(node);
                    }
                    else
                    {
                        //Update
                        XmlNode path = node["Path"];
                        if (path != null)
                            path.InnerText = item.BoundFile;
                    }

                    doc.Save(projectPath + "\\CRMDeveloperExtensions.config");
                    return;
                }
            }

            //Create new mapping
            XmlNodeList files = doc.GetElementsByTagName("Files");
            if (files.Count > 0)
            {
                XmlNode file = doc.CreateElement("File");
                XmlNode org = doc.CreateElement("OrgId");
                org.InnerText = conn.OrgId;
                file.AppendChild(org);
                XmlNode path = doc.CreateElement("Path");
                path.InnerText = item.BoundFile;
                file.AppendChild(path);
                XmlNode webResourceId = doc.CreateElement("WebResourceId");
                webResourceId.InnerText = item.WebResourceId.ToString();
                file.AppendChild(webResourceId);
                XmlNode webResourceName = doc.CreateElement("WebResourceName");
                webResourceName.InnerText = item.Name;
                file.AppendChild(webResourceName);
                files[0].AppendChild(file);

                doc.Save(projectPath + "\\CRMDeveloperExtensions.config");
            }
        }