public async Task RemoveRefreshedReferenceSaveProjectAndAddReferenceBackAgain() { string solFile = Util.GetSampleProject("reference-refresh", "ConsoleProject.sln"); Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); DotNetProject project = sol.GetAllItems <DotNetProject> ().FirstOrDefault(); File.Move(project.BaseDirectory.Combine("test.dll"), project.BaseDirectory.Combine("test.dll.tmp")); sol = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); project = sol.GetAllItems <DotNetProject> ().FirstOrDefault(); ProjectReference r = project.References.FirstOrDefault(re => re.Reference == "test"); Assert.IsNotNull(r); Assert.AreEqual(r.ReferenceType, ReferenceType.Package); Assert.IsFalse(r.IsValid); File.Move(project.BaseDirectory.Combine("test.dll.tmp"), project.BaseDirectory.Combine("test.dll")); ProjectReference refreshedReference = r.GetRefreshedReference(); Assert.IsNotNull(refreshedReference); project.References.Remove(r); await project.SaveAsync(Util.GetMonitor()); project.References.Add(refreshedReference); await project.SaveAsync(Util.GetMonitor()); // Reload project. sol = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); project = sol.GetAllItems <DotNetProject> ().FirstOrDefault(); r = project.References.FirstOrDefault(re => re.Reference == "test"); Assert.IsNotNull(r); Assert.AreEqual(r.ReferenceType, ReferenceType.Assembly); Assert.AreEqual(r.GetReferencedFileNames(project.DefaultConfiguration.Selector).Single(), project.BaseDirectory.Combine("test.dll").FullPath.ToString()); Assert.IsTrue(r.IsValid); sol.Dispose(); }