public ProjectContentContainer(MSBuildBasedProject project, IProjectContent initialProjectContent)
        {
            if (project == null)
            {
                throw new ArgumentNullException("project");
            }
            this.project                        = project;
            this.projectContent                 = initialProjectContent.SetAssemblyName(project.AssemblyName).SetLocation(project.OutputAssemblyFullPath).AddAssemblyReferences(references);
            this.assemblyModel                  = (IUpdateableAssemblyModel)project.AssemblyModel;
            this.assemblyModel.AssemblyName     = this.projectContent.AssemblyName;
            this.assemblyModel.FullAssemblyName = this.projectContent.FullAssemblyName;
            this.cacheFileName                  = GetCacheFileName(project.FileName);

            SD.ProjectService.ProjectItemAdded         += OnProjectItemAdded;
            SD.ProjectService.ProjectItemRemoved       += OnProjectItemRemoved;
            SD.AssemblyParserService.AssemblyRefreshed += OnAssemblyRefreshed;

            List <FileName> filesToParse = new List <FileName>();

            foreach (var file in project.Items.OfType <FileProjectItem>())
            {
                if (IsParseableFile(file))
                {
                    var fileName = file.FileName;
                    parserService.AddOwnerProject(fileName, project, startAsyncParse: false, isLinkedFile: file.IsLink);
                    filesToParse.Add(fileName);
                }
            }

            SD.ParserService.LoadSolutionProjectsThread.AddJob(
                monitor => Initialize(monitor, filesToParse),
                "Loading " + project.Name + "...", filesToParse.Count + LoadingReferencesWorkAmount);
        }