public CompilerSettings(CppProject project, ProjectItem prjItem)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            var vcProject     = prjItem.ContainingProject.Object as VCProject;
            var file          = prjItem.Object;
            var activeSetting = project.GetActiveConfiguration(prjItem.ContainingProject);

            AddSettingsFromVCFile(this, file, activeSetting);
            AddSettingsFromVCProject(this, vcProject, activeSetting);

            if (FullIncludes.Count > 0)
            {
                var newList = CppProject.ExpandMacros(vcProject, activeSetting, FullIncludes.Aggregate((e, e1) => e + ";" + e1)).Split(';').ToList();
                FullIncludes.Clear();
                foreach (var x in newList)
                {
                    if (x.Length > 0)
                    {
                        FullIncludes.Add(x);
                    }
                }
            }

            if (AdditionalIncludeDirectories.Count > 0)
            {
                var newList = CppProject.ExpandMacros(vcProject, activeSetting, AdditionalIncludeDirectories.Aggregate((e, e1) => e + ";" + e1)).Split(';').ToList();
                AdditionalIncludeDirectories.Clear();
                foreach (var x in newList)
                {
                    if (x.Length > 0)
                    {
                        AdditionalIncludeDirectories.Add(x);
                    }
                }
            }

            if (PreprocessorDefinitions.Count > 0)
            {
                var newList = CppProject.ExpandMacros(vcProject, activeSetting, PreprocessorDefinitions.Aggregate((e, e1) => e + ";" + e1)).Split(';').ToList();
                PreprocessorDefinitions.Clear();
                foreach (var x in newList)
                {
                    var t = x.Trim();
                    if (t == "\\\"\\\"")
                    {
                        continue;
                    }
                    if (t.Length > 0)
                    {
                        PreprocessorDefinitions.Add(t);
                    }
                }
            }

            if (ForcedIncludeFiles.Count > 0)
            {
                var newList = CppProject.ExpandMacros(vcProject, activeSetting, ForcedIncludeFiles.Aggregate((e, e1) => e + ";" + e1)).Split(';').ToList();
                ForcedIncludeFiles.Clear();
                ForcedIncludeFiles.AddRange(newList);
            }
        }