public void PropagateFileChanges ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var pc1 = sol.FindProjectByName ("Console1");
var pc2 = sol.FindProjectByName ("Console2");
var pc3 = sol.FindProjectByName ("Console3");
var ps = sol.FindProjectByName ("Shared");
var sharedFile = ps.ItemDirectory.Combine ("MyFutureClass.cs");
ps.Files.Add (new ProjectFile (sharedFile));
var pc1f = pc1.Files.GetFile (sharedFile);
var pc2f = pc2.Files.GetFile (sharedFile);
var pc3f = pc3.Files.GetFile (sharedFile);
var psf = ps.Files.GetFile (sharedFile);
Assert.AreEqual ("Compile", pc1f.BuildAction);
Assert.AreEqual ("Compile", pc2f.BuildAction);
Assert.AreEqual ("Compile", psf.BuildAction);
Assert.IsTrue (pc1f != null);
Assert.IsTrue (pc2f != null);
Assert.IsTrue (pc3f == null);
Assert.IsTrue (psf != null);
psf.BuildAction = "TestAction";
pc1f = pc1.Files.GetFile (sharedFile);
pc2f = pc2.Files.GetFile (sharedFile);
Assert.AreEqual ("TestAction", pc1f.BuildAction);
Assert.AreEqual ("TestAction", pc2f.BuildAction);
psf.CopyToOutputDirectory = FileCopyMode.PreserveNewest;
pc1f = pc1.Files.GetFile (sharedFile);
pc2f = pc2.Files.GetFile (sharedFile);
Assert.AreEqual (FileCopyMode.PreserveNewest, pc1f.CopyToOutputDirectory);
Assert.AreEqual (FileCopyMode.PreserveNewest, pc2f.CopyToOutputDirectory);
ps.Files.Remove (psf);
pc1f = pc1.Files.GetFile (sharedFile);
pc2f = pc2.Files.GetFile (sharedFile);
Assert.IsTrue (pc1f == null);
Assert.IsTrue (pc2f == null);
}