public void ImportFromExtensionsPathWithWildCard() { string mainTargetsFileContent = @" <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' > <Target Name='Main'> <Message Text='Running Main'/> </Target> <Import Project='$(MSBuildExtensionsPath)\foo\*.proj'/> </Project>"; string extnTargetsFileContent = @" <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' > <Target Name='{0}'> <Message Text='Running {0}'/> </Target> </Project> "; // Importing should stop at the first extension path where a project file is found string extnDir1 = GetNewExtensionsPathAndCreateFile("extensions1", Path.Combine("foo", "extn.proj"), String.Format(extnTargetsFileContent, "FromExtn1")); string extnDir2 = GetNewExtensionsPathAndCreateFile("extensions2", Path.Combine("foo", "extn.proj"), String.Format(extnTargetsFileContent, "FromExtn2")); string mainProjectPath = ObjectModelHelpers.CreateFileInTempProjectDirectory("main.proj", mainTargetsFileContent); CreateAndBuildProjectForImportFromExtensionsPath(mainProjectPath, "MSBuildExtensionsPath", new string[] { extnDir1, Path.Combine("tmp", "nonexistant"), extnDir2 }, null, (p, l) => { Console.WriteLine(l.FullLog); Console.WriteLine("checking FromExtn1"); Assert.True(p.Build("FromExtn1")); Console.WriteLine("checking FromExtn2"); Assert.False(p.Build("FromExtn2")); Console.WriteLine("checking logcontains"); l.AssertLogContains(String.Format(MockLogger.GetString("TargetDoesNotExist"), "FromExtn2")); }); }