public void GetProjectRootElementChangedOnDisk2() { string path = null; try { ProjectRootElementCache cache = new ProjectRootElementCache(false /* do not auto reload from disk */); path = FileUtilities.GetTemporaryFile(); ProjectRootElement xml0 = ProjectRootElement.Create(path); xml0.Save(); cache.AddEntry(xml0); ProjectRootElement xml1 = cache.TryGet(path); Assert.Equal(true, Object.ReferenceEquals(xml0, xml1)); File.SetLastWriteTime(path, DateTime.Now + new TimeSpan(1, 0, 0)); ProjectRootElement xml2 = cache.TryGet(path); Assert.Equal(true, Object.ReferenceEquals(xml0, xml2)); } finally { File.Delete(path); } }
/// <summary> /// Initialize a ProjectRootElement instance over a project with the specified file path. /// Assumes path is already normalized. /// May throw InvalidProjectFileException. /// </summary> private ProjectRootElement(string path, ProjectRootElementCache projectRootElementCache, BuildEventContext buildEventContext) : base() { ErrorUtilities.VerifyThrowArgumentLength(path, "path"); ErrorUtilities.VerifyThrowInternalRooted(path); ErrorUtilities.VerifyThrowArgumentNull(projectRootElementCache, "projectRootElementCache"); ErrorUtilities.VerifyThrowArgumentNull(buildEventContext, "buildEventContext"); _projectRootElementCache = projectRootElementCache; _buildEventContext = buildEventContext; IncrementVersion(); _versionOnDisk = _version; _timeLastChangedUtc = DateTime.UtcNow; XmlDocumentWithLocation document = LoadDocument(path); ProjectParser.Parse(document, this); projectRootElementCache.AddEntry(this); }