public void TestCache2() { string projectBody = ObjectModelHelpers.CleanupFileContents(@" <Project ToolsVersion='msbuilddefaulttoolsversion' xmlns='msbuildnamespace'> <PropertyGroup> <One>1</One> <Two>2</Two> <Three>$(ThreeIn)</Three> </PropertyGroup> <ItemGroup> <Foo Include=""*""/> <Bar Include=""msbuild.out""> <One>1</One> </Bar> <Baz Include=""$(BazIn)""/> </ItemGroup> <Target Name='Build'> <CallTarget Targets='Foo;Bar'/> </Target> <Target Name='Foo' DependsOnTargets='Foo'> <FooTarget/> </Target> <Target Name='Bar'> <BarTarget/> </Target> <Target Name='Foo'> <FooTarget/> </Target> </Project>"); Dictionary <string, string> globalProperties = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); globalProperties["ThreeIn"] = "3"; globalProperties["BazIn"] = "bazfile"; Project project = new Project(XmlReader.Create(new StringReader(projectBody)), globalProperties, ObjectModelHelpers.MSBuildDefaultToolsVersion, new ProjectCollection()); project.FullPath = "foo"; ProjectInstance instance = project.CreateProjectInstance(); BuildRequestConfiguration configuration = new BuildRequestConfiguration(new BuildRequestData(instance, new string[] { }, null), "2.0"); string originalTmp = Environment.GetEnvironmentVariable("TMP"); string originalTemp = Environment.GetEnvironmentVariable("TEMP"); try { string problematicTmpPath = @"C:\Users\}\blabla\temp"; Environment.SetEnvironmentVariable("TMP", problematicTmpPath); Environment.SetEnvironmentVariable("TEMP", problematicTmpPath); FileUtilities.ClearCacheDirectoryPath(); string cacheFilePath = configuration.GetCacheFile(); Assert.StartsWith(problematicTmpPath, cacheFilePath); } finally { Environment.SetEnvironmentVariable("TMP", originalTmp); Environment.SetEnvironmentVariable("TEMP", originalTemp); FileUtilities.ClearCacheDirectoryPath(); } }