// TODO the following function works when cfg.env is winrt80. it might // not work for any other configuration. for now, that's fine. // or net45 private static void gen_tests(config_tests cfg, string root, string top) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = false; using (XmlWriter f = XmlWriter.Create(Path.Combine(top, cfg.get_project_filename()), settings)) { f.WriteStartDocument(); f.WriteComment("Automatically generated"); f.WriteStartElement("Project", "http://schemas.microsoft.com/developer/msbuild/2003"); switch (cfg.env) { default: f.WriteAttributeString("ToolsVersion", ToolsVersion); break; } f.WriteAttributeString("DefaultTargets", "Build"); switch (cfg.env) { case "wp81_sl": break; default: // TODO is this actually needed? f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props"); f.WriteAttributeString("Condition", "Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')"); f.WriteEndElement(); // Import break; } f.WriteStartElement("PropertyGroup"); f.WriteElementString("ProjectGuid", cfg.guid); switch (cfg.env) { case "net45": write_project_type_guids(f, GUID_TEST, GUID_CSHARP); break; } f.WriteStartElement("Configuration"); f.WriteAttributeString("Condition", " '$(Configuration)' == '' "); f.WriteString("Debug"); f.WriteEndElement(); // Configuration f.WriteElementString("SchemaVersion", "2.0"); //f.WriteElementString("Platform", cfg.cpu.Replace(" ", "")); f.WriteElementString("DefaultLanguage", "en-us"); //f.WriteElementString("FileAlignment", "512"); f.WriteElementString("WarningLevel", "4"); //f.WriteElementString("PlatformTarget", cfg.cpu.Replace(" ", "")); f.WriteElementString("OutputType", "Library"); // TODO f.WriteElementString("RootNamespace", "SQLitePCL"); // TODO f.WriteElementString("AssemblyName", "SQLitePCL"); // match the name in get_products() f.WriteElementString("SignAssembly", "True"); f.WriteElementString("AssemblyOriginatorKeyFile", "../key.snk"); List<string> defines = new List<string>(); switch (cfg.env) { case "profile158": f.WriteElementString("TargetFrameworkVersion", "v4.0"); break; case "profile111": case "profile78": case "profile259": f.WriteElementString("TargetFrameworkVersion", "v4.5"); break; case "net45": f.WriteElementString("ProductVersion", "12.0.0"); f.WriteElementString("TargetFrameworkVersion", "v4.5"); f.WriteElementString("ReferencePath", "$(ProgramFiles)\\Common Files\\microsoft shared\\VSTT\\$(VisualStudioVersion)\\UITestExtensionPackages"); f.WriteElementString("TestProjectType", "UnitTest"); break; } // TODO maybe define NUNIT f.WriteEndElement(); // PropertyGroup write_section(cfg.get_dest_subpath(), f, true, defines); write_section(cfg.get_dest_subpath(), f, false, defines); f.WriteStartElement("ItemGroup"); switch (cfg.env) { case "net45": write_reference(f, "System"); write_reference(f, "System.Core"); write_reference(f, "Microsoft.VisualStudio.QualityTools.UnitTestFramework"); break; } f.WriteEndElement(); // ItemGroup f.WriteStartElement("ItemGroup"); write_cs_compile(f, root, "src\\cs\\test_cases.cs"); f.WriteEndElement(); // ItemGroup f.WriteStartElement("ItemGroup"); f.WriteStartElement("ProjectReference"); if (cfg.env == "net45") { var a = projects.find_pcls( "net45", "cppinterop", "sqlite3", "x86", "static" ); config_pcl other = a[0]; f.WriteAttributeString("Include", other.get_project_filename()); f.WriteElementString("Project", other.guid); f.WriteElementString("Name", other.get_name()); //f.WriteElementString("Private", "true"); } f.WriteEndElement(); // ProjectReference f.WriteStartElement("ProjectReference"); { config_higher other = projects.find_ugly(cfg.pcl); f.WriteAttributeString("Include", other.get_project_filename()); f.WriteElementString("Project", other.guid); f.WriteElementString("Name", other.get_name()); //f.WriteElementString("Private", "true"); } f.WriteEndElement(); // ProjectReference f.WriteEndElement(); // ItemGroup { switch (cfg.env) { case "net45": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets"); f.WriteAttributeString("Condition", "Exists('$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets')"); f.WriteEndElement(); // Import f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildToolsPath)\\Microsoft.CSharp.targets"); f.WriteEndElement(); // Import break; } } f.WriteEndElement(); // Project f.WriteEndDocument(); } }
// TODO the following function works when cfg.env is winrt80. it might // not work for any other configuration. for now, that's fine. // or net45 private static void gen_tests(config_tests cfg, string root, string top) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = false; using (XmlWriter f = XmlWriter.Create(Path.Combine(top, cfg.get_project_filename()), settings)) { f.WriteStartDocument(); f.WriteComment("Automatically generated"); f.WriteStartElement("Project", "http://schemas.microsoft.com/developer/msbuild/2003"); switch (cfg.env) { case "winrt81": case "wp81_rt": case "wp81_sl": f.WriteAttributeString("ToolsVersion", "12.0"); break; default: f.WriteAttributeString("ToolsVersion", "4.0"); break; } f.WriteAttributeString("DefaultTargets", "Build"); switch (cfg.env) { case "wp81_sl": break; default: // TODO is this actually needed? f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props"); f.WriteAttributeString("Condition", "Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')"); f.WriteEndElement(); // Import break; } f.WriteStartElement("PropertyGroup"); f.WriteElementString("ProjectGuid", cfg.guid); switch (cfg.env) { case "ios": write_project_type_guids(f, GUID_IOS, GUID_CSHARP); break; case "unified_ios": write_project_type_guids(f, GUID_UNIFIED_IOS, GUID_CSHARP); break; case "unified_mac": write_project_type_guids(f, GUID_UNIFIED_MAC, GUID_CSHARP); break; case "android": write_project_type_guids(f, GUID_ANDROID, GUID_CSHARP); break; case "winrt80": case "winrt81": write_project_type_guids(f, GUID_WINRT, GUID_CSHARP); break; case "wp80": write_project_type_guids(f, GUID_WP8, GUID_CSHARP); break; case "wp81_rt": write_project_type_guids(f, GUID_WP81RT, GUID_CSHARP); break; case "wp81_sl": write_project_type_guids(f, GUID_WP8, GUID_CSHARP); break; case "net45": write_project_type_guids(f, GUID_TEST, GUID_CSHARP); break; } f.WriteStartElement("Configuration"); f.WriteAttributeString("Condition", " '$(Configuration)' == '' "); f.WriteString("Debug"); f.WriteEndElement(); // Configuration if (cfg.env == "unified_mac") { f.WriteElementString ("TargetFrameworkVersion", "v2.0"); f.WriteElementString ("TargetFrameworkIdentifier", "Xamarin.Mac"); } f.WriteElementString("SchemaVersion", "2.0"); //f.WriteElementString("Platform", cfg.cpu.Replace(" ", "")); f.WriteElementString("DefaultLanguage", "en-us"); //f.WriteElementString("FileAlignment", "512"); f.WriteElementString("WarningLevel", "4"); //f.WriteElementString("PlatformTarget", cfg.cpu.Replace(" ", "")); f.WriteElementString("OutputType", "Library"); // TODO f.WriteElementString("RootNamespace", "SQLitePCL"); // TODO f.WriteElementString("AssemblyName", "SQLitePCL"); // match the name in get_products() List<string> defines = new List<string>(); switch (cfg.env) { case "profile136": case "profile158": f.WriteElementString("TargetFrameworkVersion", "v4.0"); break; case "profile111": case "profile78": case "profile259": f.WriteElementString("TargetFrameworkVersion", "v4.5"); break; case "ios": defines.Add("PLATFORM_IOS"); break; case "unified_ios": case "unified_mac": defines.Add("PLATFORM_UNIFIED"); break; case "android": defines.Add("__MOBILE__"); defines.Add("__ANDROID__"); f.WriteElementString("AndroidUseLatestPlatformdk", "true"); break; case "winrt80": //f.WriteElementString("TargetPlatformVersion", "8.0"); f.WriteElementString("UseVSHostingProcess", "false"); //f.WriteElementString("MinimumVisualStudioVersion", "11.0"); // TargetFrameworkVersion? defines.Add("NETFX_CORE"); break; case "winrt81": f.WriteElementString("TargetPlatformVersion", "8.1"); f.WriteElementString("MinimumVisualStudioVersion", "12.0"); f.WriteElementString("TargetFrameworkVersion", null); defines.Add("NETFX_CORE"); break; case "net45": f.WriteElementString("ProductVersion", "12.0.0"); f.WriteElementString("TargetFrameworkVersion", "v4.5"); f.WriteElementString("ReferencePath", "$(ProgramFiles)\\Common Files\\microsoft shared\\VSTT\\$(VisualStudioVersion)\\UITestExtensionPackages"); f.WriteElementString("TestProjectType", "UnitTest"); break; case "wp80": f.WriteElementString("TargetFrameworkIdentifier", "WindowsPhone"); f.WriteElementString("TargetFrameworkVersion", "v8.0"); f.WriteElementString("MinimumVisualStudioVersion", "11.0"); f.WriteElementString("SilverlightVersion", "v8.0"); f.WriteElementString("SilverlightApplication", "false"); f.WriteElementString("ValidateXaml", "true"); f.WriteElementString("ThrowErrorsInValidation", "true"); defines.Add("WINDOWS_PHONE"); defines.Add("SILVERLIGHT"); f.WriteElementString("NoStdLib", "true"); f.WriteElementString("NoConfig", "true"); break; case "wp81_rt": f.WriteElementString("TargetPlatformVersion", "8.1"); f.WriteElementString("MinimumVisualStudioVersion", "12.0"); f.WriteElementString("UseVSHostingProcess", "false"); defines.Add("NETFX_CORE"); defines.Add("WINDOWS_PHONE_APP"); break; case "wp81_sl": f.WriteElementString("TargetFrameworkIdentifier", "WindowsPhone"); f.WriteElementString("TargetFrameworkVersion", "v8.1"); f.WriteElementString("MinimumVisualStudioVersion", "12.0"); f.WriteElementString("SilverlightVersion", "v8.1"); f.WriteElementString("SilverlightApplication", "false"); f.WriteElementString("ValidateXaml", "true"); f.WriteElementString("ThrowErrorsInValidation", "true"); defines.Add("WINDOWS_PHONE"); defines.Add("SILVERLIGHT"); f.WriteElementString("NoStdLib", "true"); f.WriteElementString("NoConfig", "true"); break; } // TODO maybe define NUNIT f.WriteEndElement(); // PropertyGroup write_section(cfg.get_dest_subpath(), f, true, defines); write_section(cfg.get_dest_subpath(), f, false, defines); f.WriteStartElement("ItemGroup"); switch (cfg.env) { case "unified_ios": case "unified_mac": case "ios": case "android": break; case "net45": write_reference(f, "System"); write_reference(f, "System.Core"); write_reference(f, "Microsoft.VisualStudio.QualityTools.UnitTestFramework"); break; case "winrt80": f.WriteStartElement("SDKReference"); f.WriteAttributeString("Include", "MSTestFramework, Version=11.0"); f.WriteEndElement(); // SDKReference break; } switch (cfg.env) { case "unified_ios": write_reference(f, "Xamarin.iOS"); break; case "unified_mac": write_reference (f, "Xamarin.Mac"); break; case "ios": write_reference(f, "monotouch"); break; case "android": write_reference(f, "Mono.Android"); break; } f.WriteEndElement(); // ItemGroup f.WriteStartElement("ItemGroup"); write_cs_compile(f, root, "src\\cs\\test_cases.cs"); f.WriteEndElement(); // ItemGroup f.WriteStartElement("ItemGroup"); f.WriteStartElement("ProjectReference"); if (cfg.env == "winrt80") { config_pcl other = projects.find_bait(cfg.pcl); f.WriteAttributeString("Include", other.get_project_filename()); f.WriteElementString("Project", other.guid); f.WriteElementString("Name", other.get_name()); //f.WriteElementString("Private", "true"); } else if (cfg.env == "net45") { var a = projects.find_pcls( "net45", "cppinterop", "sqlite3", "x86", "static" ); config_pcl other = a[0]; f.WriteAttributeString("Include", other.get_project_filename()); f.WriteElementString("Project", other.guid); f.WriteElementString("Name", other.get_name()); //f.WriteElementString("Private", "true"); } f.WriteEndElement(); // ProjectReference f.WriteStartElement("ProjectReference"); { config_higher other = projects.find_ugly(cfg.pcl); f.WriteAttributeString("Include", other.get_project_filename()); f.WriteElementString("Project", other.guid); f.WriteElementString("Name", other.get_name()); //f.WriteElementString("Private", "true"); } f.WriteEndElement(); // ProjectReference f.WriteEndElement(); // ItemGroup { switch (cfg.env) { case "winrt80": f.WriteStartElement("PropertyGroup"); f.WriteAttributeString("Condition", " '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '11.0' "); f.WriteElementString("VisualStudioVersion", "11.0"); f.WriteEndElement(); // PropertyGroup break; case "winrt81": f.WriteStartElement("PropertyGroup"); f.WriteAttributeString("Condition", " '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '12.0' "); f.WriteElementString("VisualStudioVersion", "12.0"); f.WriteEndElement(); // PropertyGroup break; case "wp81_rt": f.WriteStartElement("PropertyGroup"); f.WriteAttributeString("Condition", " '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '12.0' "); f.WriteElementString("VisualStudioVersion", "12.0"); f.WriteEndElement(); // PropertyGroup f.WriteStartElement("PropertyGroup"); f.WriteAttributeString("Condition", " '$(TargetPlatformIdentifier)' == '' "); f.WriteElementString("TargetPlatformIdentifier", "WindowsPhoneApp"); f.WriteEndElement(); // PropertyGroup break; case "wp81_sl": break; } switch (cfg.env) { case "unified_ios": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Xamarin\\iOS\\Xamarin.iOS.CSharp.targets"); f.WriteEndElement(); // Import break; case "unified_mac": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Xamarin\\Mac\\Xamarin.Mac.CSharp.targets"); f.WriteEndElement(); // Import break; case "ios": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Xamarin\\iOS\\Xamarin.MonoTouch.CSharp.targets"); f.WriteEndElement(); // Import break; case "android": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Novell\\Novell.MonoDroid.CSharp.targets"); f.WriteEndElement(); // Import break; case "winrt80": case "winrt81": case "wp81_rt": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets"); f.WriteEndElement(); // Import break; case "net45": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets"); f.WriteAttributeString("Condition", "Exists('$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets')"); f.WriteEndElement(); // Import f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildToolsPath)\\Microsoft.CSharp.targets"); f.WriteEndElement(); // Import break; case "wp80": case "wp81_sl": f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Microsoft\\$(TargetFrameworkIdentifier)\\$(TargetFrameworkVersion)\\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets"); f.WriteEndElement(); // Import f.WriteStartElement("Import"); f.WriteAttributeString("Project", "$(MSBuildExtensionsPath)\\Microsoft\\$(TargetFrameworkIdentifier)\\$(TargetFrameworkVersion)\\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets"); f.WriteEndElement(); // Import break; } } f.WriteEndElement(); // Project f.WriteEndDocument(); } }