public void ReloadProjectWithInvalidToolsVersionInFile() { string oldValue = Environment.GetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION"); try { // In the new world of figuring out the ToolsVersion to use, we completely ignore the default // ToolsVersion in the ProjectCollection. However, this test explicitly depends on modifying // that, so we need to turn the new defaulting behavior off in order to verify that this still works. Environment.SetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION", "1"); InternalUtilities.RefreshInternalEnvironmentValues(); string content = @" <Project ToolsVersion='bogus' xmlns='http://schemas.microsoft.com/developer/msbuild/2003' > <Target Name='t'/> </Project> "; Project project = new Project(XmlReader.Create(new StringReader(content))); project.FullPath = "c:\\123.proj"; Project project2 = ProjectCollection.GlobalProjectCollection.LoadProject("c:\\123.proj", null, null); Assert.True(Object.ReferenceEquals(project, project2)); } finally { Environment.SetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION", oldValue); InternalUtilities.RefreshInternalEnvironmentValues(); } }
public void SetDefaultToolsVersion() { string oldValue = Environment.GetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION"); try { // In the new world of figuring out the ToolsVersion to use, we completely ignore the default // ToolsVersion in the ProjectCollection. However, this test explicitly depends on modifying // that, so we need to turn the new defaulting behavior off in order to verify that this still works. Environment.SetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION", "1"); InternalUtilities.RefreshInternalEnvironmentValues(); ProjectCollection collection = new ProjectCollection(); collection.AddToolset(new Toolset("x", @"c:\y", collection, null)); collection.DefaultToolsVersion = "x"; Assert.Equal("x", collection.DefaultToolsVersion); string content = @" <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' > <Target Name='t'/> </Project> "; Project project = new Project(XmlReader.Create(new StringReader(content)), null, null, collection); Assert.Equal("x", project.ToolsVersion); } finally { Environment.SetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION", oldValue); InternalUtilities.RefreshInternalEnvironmentValues(); } }
public void ProjectToolsVersion20Present() { if (FrameworkLocationHelper.PathToDotNetFrameworkV20 == null) { // "Requires 2.0 to be installed" return; } string oldValue = Environment.GetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION"); try { // In the new world of figuring out the ToolsVersion to use, we completely ignore what // is written in the project file. However, this test explicitly depends on effectively // modifying the "project file" (through the construction model OM), so we need to turn // that behavior off in order to verify that it still works. Environment.SetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION", "1"); InternalUtilities.RefreshInternalEnvironmentValues(); Project project = new Project(); project.Xml.ToolsVersion = "2.0"; project.ReevaluateIfNecessary(); Assert.Equal("2.0", project.ToolsVersion); project.Xml.ToolsVersion = "4.0"; Assert.Equal("2.0", project.ToolsVersion); } finally { Environment.SetEnvironmentVariable("MSBUILDLEGACYDEFAULTTOOLSVERSION", oldValue); InternalUtilities.RefreshInternalEnvironmentValues(); } }
public void CreateToolsVersionString() { List <Toolset> toolsets = new List <Toolset>(); toolsets.Add(new Toolset("66", "x", new ProjectCollection(), null)); toolsets.Add(new Toolset("44", "y", new ProjectCollection(), null)); string result = InternalUtilities.CreateToolsVersionListString(toolsets); Assert.Equal("\"66\", \"44\"", result); }
protected string GetXmlContents(string xmlText) { XmlDocumentWithLocation xmldoc = new XmlDocumentWithLocation(loadAsReadOnly); xmldoc.LoadXml(xmlText); XmlElementWithLocation rootElement = (XmlElementWithLocation)xmldoc.FirstChild; Console.WriteLine("originalxml = " + xmlText); Console.WriteLine("innerText = " + rootElement.InnerText); Console.WriteLine("innerXml = " + rootElement.InnerXml); Console.WriteLine("-----------"); string xmlContents = InternalUtilities.GetXmlNodeInnerContents(rootElement); return(xmlContents); }