Ejemplo n.º 1
0
        public XamarinAndroidWearApplicationProject(string debugConfigurationName = "Debug", string releaseConfigurationName = "Release", [CallerMemberName] string packageName = "")
            : base(debugConfigurationName, releaseConfigurationName, packageName)
        {
            TargetFrameworkVersion = Versions.KitkatWatch;
            UseLatestPlatformSdk   = true;
            PackageReferences.Add(KnownPackages.AndroidWear_2_2_0);
            if (Builder.UseDotNet)
            {
                this.AddDotNetCompatPackages();
            }

            MainActivity    = default_main_activity;
            StringsXml      = default_strings_xml;
            LayoutMain      = default_layout_main;
            LayoutRectMain  = default_layout_rect_main;
            LayoutRoundMain = default_layout_round_main;

            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\RectangleMain.axml")
            {
                TextContent = () => LayoutRectMain
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\RoundMain.axml")
            {
                TextContent = () => LayoutRoundMain
            });
        }
Ejemplo n.º 2
0
 public XamarinFormsMapsApplicationProject()
 {
     PackageReferences.Add(KnownPackages.XamarinFormsMaps_4_0_0_425677);
     MainActivity = MainActivity.Replace("//${AFTER_FORMS_INIT}", "Xamarin.FormsMaps.Init (this, savedInstanceState);");
     //NOTE: API_KEY metadata just has to *exist*
     AndroidManifest = AndroidManifest.Replace("</application>", "<meta-data android:name=\"com.google.android.maps.v2.API_KEY\" android:value=\"\" /></application>");
 }
Ejemplo n.º 3
0
        public XamarinFormsXASdkProject(string outputType = "Exe")
            : base(outputType)
        {
            PackageReferences.Add(KnownPackages.XamarinForms_4_5_0_617);
            // additional deps for XForms on NET5
            // to workaround the issue similar to https://github.com/mono/linker/issues/1139
            PackageReferences.Add(KnownPackages.SystemCodeDom_5_0_0_preview_3_20214_6);
            PackageReferences.Add(KnownPackages.SystemDiagnosticsEventLog_5_0_0_preview_3_20214_6);
            PackageReferences.Add(KnownPackages.SystemDiagnosticsPerformanceCounter_5_0_0_preview_3_20214_6);
            PackageReferences.Add(KnownPackages.SystemIOPorts_5_0_0_preview_3_20214_6);
            PackageReferences.Add(KnownPackages.SystemSecurityPermissions_5_0_0_preview_3_20214_6);
            PackageReferences.Add(KnownPackages.SystemThreadingAccessControl_5_0_0_preview_3_20214_6);

            // Workaround for AndroidX, see: https://github.com/xamarin/AndroidSupportComponents/pull/239
            Imports.Add(new Import(() => "Directory.Build.targets")
            {
                TextContent = () =>
                              @"<Project>
						<PropertyGroup>
							<VectorDrawableCheckBuildToolsVersionTaskBeforeTargets />
						</PropertyGroup>
					</Project>"
            });

            Sources.Add(new AndroidItem.AndroidResource("Resources\\values\\colors.xml")
            {
                TextContent = () => colors_xml,
            });
            Sources.Add(new AndroidItem.AndroidResource("Resources\\values\\styles.xml")
            {
                TextContent = () => styles_xml,
            });
            Sources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Tabbar.xml")
            {
                TextContent = () => Tabbar_xml,
            });
            Sources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Toolbar.xml")
            {
                TextContent = () => Toolbar_xml,
            });
            Sources.Add(new BuildItem("EmbeddedResource", "MainPage.xaml")
            {
                TextContent = MainPageXaml,
            });
            Sources.Add(new BuildItem.Source("MainPage.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml_cs),
            });
            Sources.Add(new BuildItem("EmbeddedResource", "App.xaml")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml),
            });
            Sources.Add(new BuildItem.Source("App.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml_cs),
            });

            MainActivity = default_main_activity_cs;
        }
 public SimpleTestProjectFrameworkContext(
     NuGetFramework framework,
     IEnumerable <SimpleTestPackageContext> packageReferences,
     IEnumerable <SimpleTestProjectContext> projectReferences)
 {
     Framework = framework;
     PackageReferences.AddRange(packageReferences);
     ProjectReferences.AddRange(projectReferences);
 }
        public XamarinFormsAndroidApplicationProject(string debugConfigurationName = "Debug", string releaseConfigurationName = "Release")
            : base(debugConfigurationName, releaseConfigurationName)
        {
            var forms = KnownPackages.XamarinForms_3_1_0_697729;

            PackageReferences.Add(forms);
            PackageReferences.Add(KnownPackages.Android_Arch_Core_Common_26_1_0);
            PackageReferences.Add(KnownPackages.Android_Arch_Lifecycle_Common_26_1_0);
            PackageReferences.Add(KnownPackages.Android_Arch_Lifecycle_Runtime_26_1_0);
            PackageReferences.Add(KnownPackages.AndroidSupportV4_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportCompat_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportCoreUI_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportCoreUtils_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportDesign_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportFragment_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportMediaCompat_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportV7AppCompat_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportV7CardView_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportV7MediaRouter_27_0_2_1);
            PackageReferences.Add(KnownPackages.SupportV7RecyclerView_27_0_2_1);
            PackageReferences.Add(KnownPackages.VectorDrawable_27_0_2_1);

            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\values\\colors.xml")
            {
                TextContent = () => colors_xml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\values\\styles.xml")
            {
                TextContent = () => styles_xml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Tabbar.axml")
            {
                TextContent = () => Tabbar_axml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Toolbar.axml")
            {
                TextContent = () => Toolbar_axml,
            });
            OtherBuildItems.Add(new BuildItem("EmbeddedResource", "MainPage.xaml")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml),
            });
            Sources.Add(new BuildItem.Source("MainPage.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml_cs),
            });
            OtherBuildItems.Add(new BuildItem("EmbeddedResource", "App.xaml")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml),
            });
            Sources.Add(new BuildItem.Source("App.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml_cs),
            });

            MainActivity = default_main_activity_cs;
        }
Ejemplo n.º 6
0
 public SimpleTestProjectFrameworkContext(
     NuGetFramework framework,
     IEnumerable <SimpleTestPackageContext> packageReferences,
     IEnumerable <SimpleTestProjectContext> projectReferences)
 {
     Framework = framework;
     PackageReferences.AddRange(packageReferences);
     ProjectReferences.AddRange(projectReferences);
     TargetAlias = framework.GetShortFolderName();
 }
Ejemplo n.º 7
0
            public override IEnumerable <PackageLocation> LoadPackages()
            {
                _loadedPackages = new DefaultConfigurationManager(PackagesDirectory).Load <PackageReferences>();

                var onDiskPackages = base.LoadPackages();

                return(from packageRef in _loadedPackages.Packages
                       let package = onDiskPackages.FirstOrDefault(_ => PackageMatch(_, packageRef))
                                     ?? ReloadPackage(packageRef)
                                     where package != null
                                     select package);
            }
Ejemplo n.º 8
0
        public XamarinFormsXASdkProject(string outputType = "Exe", [CallerMemberName] string packageName = "")
            : base(outputType, packageName)
        {
            PackageReferences.Add(KnownPackages.XamarinForms_4_7_0_1142);
            this.AddDotNetCompatPackages();

            // Workaround for AndroidX, see: https://github.com/xamarin/AndroidSupportComponents/pull/239
            Imports.Add(new Import(() => "Directory.Build.targets")
            {
                TextContent = () =>
                              @"<Project>
						<PropertyGroup>
							<VectorDrawableCheckBuildToolsVersionTaskBeforeTargets />
						</PropertyGroup>
					</Project>"
            });

            Sources.Add(new AndroidItem.AndroidResource("Resources\\values\\colors.xml")
            {
                TextContent = () => colors_xml,
            });
            Sources.Add(new AndroidItem.AndroidResource("Resources\\values\\styles.xml")
            {
                TextContent = () => styles_xml,
            });
            Sources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Tabbar.xml")
            {
                TextContent = () => Tabbar_xml,
            });
            Sources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Toolbar.xml")
            {
                TextContent = () => Toolbar_xml,
            });
            Sources.Add(new BuildItem("EmbeddedResource", "MainPage.xaml")
            {
                TextContent = MainPageXaml,
            });
            Sources.Add(new BuildItem.Source("MainPage.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml_cs),
            });
            Sources.Add(new BuildItem("EmbeddedResource", "App.xaml")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml),
            });
            Sources.Add(new BuildItem.Source("App.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml_cs),
            });

            MainActivity = default_main_activity_cs;
        }
Ejemplo n.º 9
0
        internal IEnumerable <Assembly> LoadAssembliesAndBindLoader()
        {
            var list = new List <Assembly>();

            list.AddRange(_loader.LoadAssemblies(LoaderPaths));

            _loader.RegisterAssemblyResolve(
                list.Select(t => Path.GetDirectoryName(new Uri(t.CodeBase).LocalPath)).Distinct()
                );

            list.AddRange(
                _loader.LoadAssemblies(PackageReferences.Select(pkg => pkg.ResolveAssembly()))
                );
            return(list);
        }
        public XamarinFormsAndroidApplicationProject(string debugConfigurationName = "Debug", string releaseConfigurationName = "Release", [CallerMemberName] string packageName = "")
            : base(debugConfigurationName, releaseConfigurationName, packageName)
        {
            if (Builder.UseDotNet)
            {
                PackageReferences.Add(KnownPackages.XamarinForms_4_7_0_1142);
                this.AddDotNetCompatPackages();
            }
            else
            {
                PackageReferences.Add(KnownPackages.XamarinForms_4_0_0_425677);
            }

            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\values\\colors.xml")
            {
                TextContent = () => colors_xml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\values\\styles.xml")
            {
                TextContent = () => styles_xml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Tabbar.axml")
            {
                TextContent = () => Tabbar_axml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Toolbar.axml")
            {
                TextContent = () => Toolbar_axml,
            });
            OtherBuildItems.Add(new BuildItem("EmbeddedResource", "MainPage.xaml")
            {
                TextContent = MainPageXaml,
            });
            Sources.Add(new BuildItem.Source("MainPage.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml_cs),
            });
            OtherBuildItems.Add(new BuildItem("EmbeddedResource", "App.xaml")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml),
            });
            Sources.Add(new BuildItem.Source("App.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml_cs),
            });

            MainActivity = default_main_activity_cs;
        }
Ejemplo n.º 11
0
        public override bool Execute()
        {
            var log = new MSBuildLogger(Log);

            log.LogDebug($"(in) ProjectUniqueName '{ProjectUniqueName}'");
            log.LogDebug($"(in) TargetFrameworks '{TargetFrameworks}'");
            log.LogDebug($"(in) PackageReferences '{string.Join(";", PackageReferences.Select(p => p.ItemSpec))}'");

            var entries = new List <ITaskItem>();
            var seenIds = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            foreach (var msbuildItem in PackageReferences)
            {
                var packageId = msbuildItem.ItemSpec;

                if (string.IsNullOrEmpty(packageId) || !seenIds.Add(packageId))
                {
                    // Skip empty or already processed ids
                    continue;
                }

                var properties = new Dictionary <string, string>();
                properties.Add("ProjectUniqueName", ProjectUniqueName);
                properties.Add("Type", "Dependency");
                properties.Add("Id", packageId);
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "Version", "VersionRange");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "VersionOverride");

                if (!string.IsNullOrEmpty(TargetFrameworks))
                {
                    properties.Add("TargetFrameworks", TargetFrameworks);
                }

                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "IncludeAssets");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "ExcludeAssets");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "PrivateAssets");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "NoWarn");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "IsImplicitlyDefined");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "GeneratePathProperty");
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "Aliases");

                entries.Add(new TaskItem(Guid.NewGuid().ToString(), properties));
            }

            RestoreGraphItems = entries.ToArray();

            return(true);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ProjectFile"/> class
        /// based on the given <paramref name="xmlContent"/>.
        /// /// </summary>
        /// <param name="xmlContent">The contents of a MSBuild project file.</param>
        public ProjectFile(string xmlContent)
        {
            var projectFileDocument      = XDocument.Parse(xmlContent);
            var packageReferenceElements = projectFileDocument.Descendants("PackageReference");

            foreach (var packageReferenceElement in packageReferenceElements)
            {
                PackageReferences.Add(new PackageReference(packageReferenceElement.Attribute("Include").Value, packageReferenceElement.Attribute("Version").Value));
            }

            var assemblyReferenceElements = projectFileDocument.Descendants("Reference");

            foreach (var assemblyReference in assemblyReferenceElements)
            {
                AssemblyReferences.Add(new AssemblyReference(assemblyReference.Attribute("Include").Value));
            }
        }
Ejemplo n.º 13
0
        public XamarinFormsAndroidApplicationProject(string debugConfigurationName = "Debug", string releaseConfigurationName = "Release")
            : base(debugConfigurationName, releaseConfigurationName)
        {
            //NOTE: we can get all the other dependencies transitively, yay!
            PackageReferences.Add(KnownPackages.XamarinForms_3_6_0_220655);

            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\values\\colors.xml")
            {
                TextContent = () => colors_xml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\values\\styles.xml")
            {
                TextContent = () => styles_xml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Tabbar.axml")
            {
                TextContent = () => Tabbar_axml,
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\Toolbar.axml")
            {
                TextContent = () => Toolbar_axml,
            });
            OtherBuildItems.Add(new BuildItem("EmbeddedResource", "MainPage.xaml")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml),
            });
            Sources.Add(new BuildItem.Source("MainPage.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(MainPage_xaml_cs),
            });
            OtherBuildItems.Add(new BuildItem("EmbeddedResource", "App.xaml")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml),
            });
            Sources.Add(new BuildItem.Source("App.xaml.cs")
            {
                TextContent = () => ProcessSourceTemplate(App_xaml_cs),
            });

            MainActivity = default_main_activity_cs;
        }
        public override bool Execute()
        {
            string[] packageFolders = PackageFolders.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(i => i.Trim()).Where(i => !String.IsNullOrWhiteSpace(i)).ToArray();

            foreach (PackageReferenceTaskItem packageReference in PackageReferences.Select(i => new PackageReferenceTaskItem(i)))
            {
                if (String.IsNullOrWhiteSpace(packageReference.Sha512))
                {
                    Log.LogMessageFromText($"Cannot validate package reference '{packageReference.Name}' because it does not have a SHA512 associated with it.", MessageImportance.Low);
                    continue;
                }

                string packageDirectory = packageFolders.Select(i => Path.Combine(i, packageReference.PackagePath)).FirstOrDefault(Directory.Exists);

                if (packageDirectory == null)
                {
                    Log.LogErrorFromText("ND1001", $"The package '{packageReference.Name}' does not exist in any of the specified package folders '{PackageFolders}'.  Ensure that the packages for this project have been restored and were not deleted.");
                    continue;
                }

                string hashFilePath = Path.Combine(packageDirectory, packageReference.Hashfile);

                if (!File.Exists(hashFilePath))
                {
                    Log.LogErrorFromText("ND1002", $"The package '{packageReference.Name}' does not have a hash file at '{hashFilePath}'.  Ensure that the package was properly restored and that it has not been deleted.");
                    continue;
                }

                string actualHash = File.ReadAllText(hashFilePath).Trim();

                if (!String.Equals(packageReference.Sha512, actualHash))
                {
                    Log.LogErrorFromText("ND1003", $"The package reference '{packageReference.Name}' has an expected hash of '{packageReference.Sha512}' which does not match the hash of the package '{actualHash}' according to NuGet's hash file '{hashFilePath}'.  This can occur if you are downloading a different package then expected.  Verify that the feeds you are using contain the correct package.  In some cases, users modify packages and upload them with the same ID and version of an existing package.");
                }
            }

            return(!Log.HasLoggedErrors);
        }
Ejemplo n.º 15
0
        public TestRunnerOptions(TestRunnerOptions copyFrom)
        {
            if (copyFrom == null)
            {
                return;
            }

            IgnoreFocus = copyFrom.IgnoreFocus;
            FixturePaths.AddAll(copyFrom.FixturePaths);
            LoaderPaths.AddAll(copyFrom.LoaderPaths);
            LoadAssemblyFromPath = copyFrom.LoadAssemblyFromPath;
            RandomSeed           = copyFrom.RandomSeed;
            _flags       = copyFrom._flags;
            ContextLines = copyFrom.ContextLines;
            SelfTest     = copyFrom.SelfTest;
            PackageReferences.AddAll(copyFrom.PackageReferences);
            PlanFilter.CopyFrom(copyFrom.PlanFilter);
            TestTimeout                = copyFrom.TestTimeout;
            PlanTimeout                = copyFrom.PlanTimeout;
            SlowTestThreshold          = copyFrom.SlowTestThreshold;
            AssertionMessageFormatMode = copyFrom.AssertionMessageFormatMode;
            PreviousRun                = copyFrom.PreviousRun;
        }
        public XamarinAndroidWearApplicationProject(string debugConfigurationName = "Debug", string releaseConfigurationName = "Release")
            : base(debugConfigurationName, releaseConfigurationName)
        {
            TargetFrameworkVersion = Versions.KitkatWatch;
            UseLatestPlatformSdk   = false;
            PackageReferences.Add(KnownPackages.AndroidSupportV13Kitkat);
            PackageReferences.Add(KnownPackages.AndroidWear);

            MainActivity    = default_main_activity;
            StringsXml      = default_strings_xml;
            LayoutMain      = default_layout_main;
            LayoutRectMain  = default_layout_rect_main;
            LayoutRoundMain = default_layout_round_main;

            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\RectangleMain.axml")
            {
                TextContent = () => LayoutRectMain
            });
            AndroidResources.Add(new AndroidItem.AndroidResource("Resources\\layout\\RoundMain.axml")
            {
                TextContent = () => LayoutRoundMain
            });
        }
        public override bool Execute()
        {
            if (Environment.GetEnvironmentVariable("DEBUG_NUGETIZER") == "1")
            {
                Debugger.Launch();
            }

            var packages = new ConcurrentDictionary <PackageIdentity, List <PackageIdentity> >();
            Func <string, PackageIdentity> parse = value =>
            {
                var parts = value.Split('/');
                return(new PackageIdentity(parts[0], parts[1]));
            };

            // Build the list of parent>child relationships.
            foreach (var dependency in PackageDependencies.Where(x => x.ItemSpec.Contains('/')))
            {
                var identity = parse(dependency.ItemSpec);
                var parent   = dependency.GetMetadata("ParentPackage");
                if (!string.IsNullOrEmpty(parent))
                {
                    packages.GetOrAdd(parse(parent), _ => new List <PackageIdentity>())
                    .Add(identity);
                }
                else
                {
                    // In centrally managed package versions, at this point we have
                    // the right version if the project is using centrally managed versions
                    var primaryReference = PackageReferences.FirstOrDefault(x => x.ItemSpec == identity.Id);
                    if (primaryReference != null && primaryReference.GetNullableMetadata("Version") == null)
                    {
                        primaryReference.SetMetadata("Version", identity.Version);
                    }
                }
            }

            var inferred = new Dictionary <PackageIdentity, ITaskItem>();

            foreach (var reference in PackageReferences)
            {
                var identity         = new PackageIdentity(reference.ItemSpec, reference.GetMetadata("Version"));
                var originalMetadata = (IDictionary <string, string>)reference.CloneCustomMetadata();
                foreach (var dependency in FindDependencies(identity, packages))
                {
                    if (!inferred.ContainsKey(dependency))
                    {
                        var item = new TaskItem(dependency.Id);
                        foreach (var metadata in originalMetadata)
                        {
                            item.SetMetadata(metadata.Key, metadata.Value);
                        }

                        item.SetMetadata("Version", dependency.Version);
                        inferred.Add(dependency, item);
                    }
                }
            }

            ImplicitPackageReferences = inferred.Values.ToArray();

            return(true);
        }
Ejemplo n.º 18
0
        public XamarinFormsMapsApplicationProject([CallerMemberName] string packageName = "")
            : base(packageName: packageName)
        {
            if (Builder.UseDotNet)
            {
                PackageReferences.Add(KnownPackages.XamarinFormsMaps_4_7_0_1142);
                PackageReferences.Add(KnownPackages.Xamarin_GooglePlayServices_Base);
                PackageReferences.Add(KnownPackages.Xamarin_GooglePlayServices_Basement);
                PackageReferences.Add(KnownPackages.Xamarin_GooglePlayServices_Maps);
                PackageReferences.Add(KnownPackages.Xamarin_GooglePlayServices_Tasks);

                //TODO: temporary fix for <Import/> ordering breakage and workloads
                SetProperty("AndroidApplication", "True");
            }
            else
            {
                PackageReferences.Add(KnownPackages.XamarinFormsMaps_4_0_0_425677);
            }
            MainActivity = MainActivity.Replace("//${AFTER_FORMS_INIT}", "Xamarin.FormsMaps.Init (this, savedInstanceState);");
            //NOTE: API_KEY metadata just has to *exist*
            AndroidManifest = AndroidManifest.Replace("</application>", "<meta-data android:name=\"com.google.android.maps.v2.API_KEY\" android:value=\"\" /></application>");
            // From https://github.com/xamarin/GooglePlayServicesComponents/blob/fc057c754e04d3e719d8c111d03d60eb2467b9ce/source/com.google.android.gms/play-services-basement/buildtasks.tests/google-services.json
            OtherBuildItems.Add(new BuildItem("GoogleServicesJson", "google-services.json")
            {
                Encoding    = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false),
                TextContent = () =>
                              @"{
  ""project_info"": {
    ""project_number"": ""1041063143217"",
    ""firebase_url"": ""https://white-cedar-97320.firebaseio.com"",
    ""project_id"": ""white-cedar-97320"",
    ""storage_bucket"": ""white-cedar-97320.appspot.com""
  },
  ""client"": [
    {
      ""client_info"": {
        ""mobilesdk_app_id"": ""1:1041063143217:android:ffbe6976403db935"",
        ""android_client_info"": {
          ""package_name"": ""com.xamarin.sample""
        }
      },
      ""oauth_client"": [
        {
          ""client_id"": ""1041063143217-rve97omgqivvs3qcne1ljso137k3t6po.apps.googleusercontent.com"",
          ""client_type"": 1,
          ""android_info"": {
            ""package_name"": ""com.xamarin.sample"",
            ""certificate_hash"": ""84949BBD3F34C8290A55AC9B66AD0A701EBA67AC""
          }
        },
        {
          ""client_id"": ""1041063143217-hu5u4dnv8dkj19i4tpi6piv97kd2k9i0.apps.googleusercontent.com"",
          ""client_type"": 3
        },
        {
          ""client_id"": ""1041063143217-n82odtjjgs9g2qnh1t470mdhj086id9f.apps.googleusercontent.com"",
          ""client_type"": 3
        }
      ],
      ""api_key"": [
        {
          ""current_key"": ""NOT_A_REAL_KEY""
        }
      ],
      ""services"": {
        ""analytics_service"": {
          ""status"": 2,
          ""analytics_property"": {
            ""tracking_id"": ""UA-6465612-26""
          }
        },
        ""appinvite_service"": {
          ""status"": 2,
          ""other_platform_oauth_client"": [
            {
              ""client_id"": ""1041063143217-hu5u4dnv8dkj19i4tpi6piv97kd2k9i0.apps.googleusercontent.com"",
              ""client_type"": 3
            },
            {
              ""client_id"": ""1041063143217-rdc97s7jssl1k29c83b6oci04sihqkdi.apps.googleusercontent.com"",
              ""client_type"": 2,
              ""ios_info"": {
                ""bundle_id"": ""com.xamarin.googleios.collectallthestars""
              }
            }
          ]
        },
        ""ads_service"": {
          ""status"": 2
        }
      }
    }
  ],
  ""configuration_version"": ""1""
}"
            });
        }
Ejemplo n.º 19
0
        public static void LogWriteGenerateResults(IDictionary <Type, GenerationOutput> outputs)
        {
            var projects  = outputs.Where(o => typeof(Project).IsAssignableFrom(o.Key));
            var solutions = outputs.Where(o => typeof(Solution).IsAssignableFrom(o.Key));
            var others    = outputs.Where(o => ((!typeof(Project).IsAssignableFrom(o.Key)) && (!typeof(Solution).IsAssignableFrom(o.Key))));

            var generatedProjectFiles  = new List <string>(projects.SelectMany(o => o.Value.Generated));
            var skippedProjectFiles    = new List <string>(projects.SelectMany(o => o.Value.Skipped));
            var generatedSolutionFiles = new List <string>(solutions.SelectMany(o => o.Value.Generated));
            var skippedSolutionFiles   = new List <string>(solutions.SelectMany(o => o.Value.Skipped));

            var generatedOtherFiles = new List <string>(others.SelectMany(o => o.Value.Generated));
            var skippedOtherFiles   = new List <string>(others.SelectMany(o => o.Value.Skipped));

            if (generatedProjectFiles.Count != 0)
            {
                LogWriteLine("  " + generatedProjectFiles.Count + " project" + (generatedProjectFiles.Count > 1 ? "s" : "") + " generated:");
                generatedProjectFiles.Sort();
                foreach (string file in generatedProjectFiles)
                {
                    LogWriteLine("    {0}", file);
                }
            }

            if (generatedSolutionFiles.Count != 0)
            {
                LogWriteLine("  " + generatedSolutionFiles.Count + " solution" + (generatedSolutionFiles.Count > 1 ? "s" : "") + " generated:");
                generatedSolutionFiles.Sort();
                foreach (string file in generatedSolutionFiles)
                {
                    LogWriteLine("    {0}", file);
                }
            }

            if (Project.FastBuildMasterGeneratedFiles.Count > 0)
            {
                LogWriteLine("  " + Project.FastBuildMasterGeneratedFiles.Count + " fastbuild master bff generated:");
                Project.FastBuildMasterGeneratedFiles.Sort();
                foreach (string file in Project.FastBuildMasterGeneratedFiles)
                {
                    LogWriteLine("    {0}", file);
                }
            }

            if (generatedOtherFiles.Count != 0)
            {
                LogWriteLine("  " + generatedOtherFiles.Count + " other file" + (generatedOtherFiles.Count > 1 ? "s" : "") + " generated:");
                generatedOtherFiles.Sort();
                foreach (string file in generatedOtherFiles)
                {
                    LogWriteLine("    {0}", file);
                }
            }

            PackageReferences.LogPackagesVersionsDiscrepancy();

            LogWriteLine("  Results:");
            if (generatedProjectFiles.Count > 0 || skippedProjectFiles.Count > 0)
            {
                LogWriteLine("    projects  ({0,5} configurations) {1,5} generated, {2,5} up-to-date", Project.Configuration.Count, generatedProjectFiles.Count, skippedProjectFiles.Count);
                if (Project.FastBuildGeneratedFileCount > 0 || Project.FastBuildUpToDateFileCount > 0)
                {
                    LogWriteLine("    fastbuild                        {0,5} generated, {1,5} up-to-date", Project.FastBuildGeneratedFileCount, Project.FastBuildUpToDateFileCount);
                }
            }
            if (generatedSolutionFiles.Count > 0 || skippedSolutionFiles.Count > 0)
            {
                LogWriteLine("    solutions ({0,5} configurations) {1,5} generated, {2,5} up-to-date", Solution.Configuration.Count, generatedSolutionFiles.Count, skippedSolutionFiles.Count);
            }

            if (Project.BlobGenerated > 0 || Project.BlobUpdateToDate > 0)
            {
                LogWriteLine("    blobs                            {0,5} generated, {1,5} up-to-date", Project.BlobGenerated, Project.BlobUpdateToDate);
            }

            if (generatedOtherFiles.Count > 0 || skippedOtherFiles.Count > 0)
            {
                LogWriteLine("    other files                      {0,5} generated, {1,5} up-to-date", generatedOtherFiles.Count, skippedOtherFiles.Count);
            }
        }
 public IEnumerable <IPackage> GetPackages(Func <PackageReferenceContext, IPackage> projectFactoryFunc) => PackageReferences.Select(projectFactoryFunc);
Ejemplo n.º 21
0
        ITaskItem?GetPackageReference(ITaskItem weaverFileItem)
        {
            var packageName = Path.GetFileNameWithoutExtension(weaverFileItem.ItemSpec);

            return(PackageReferences?.FirstOrDefault(p => string.Equals(p.ItemSpec, packageName, StringComparison.OrdinalIgnoreCase)));
        }
        public CsProjectFileDefinition Deserialize(Func <string, string> csprojToLabel,
                                                   IReadOnlyDictionary <string, string> importLabels, string projectFilePath)
        {
            _document = XDocument.Load(projectFilePath);
            var projectFileDir = Path.GetDirectoryName(projectFilePath);

            Type = GetProjectType(_document);

            foreach (var reference in _document.Descendants("PackageReference"))
            {
                var name = reference.Attribute("Include").Value;

                if (importLabels.ContainsKey(name))
                {
                    ProjectReference.Add(importLabels[name]);
                }
                else
                {
                    if (name.Equals("microsoft.net.test.sdk", StringComparison.OrdinalIgnoreCase))
                    {
                        PackageReferences.Add("microsoft.testplatform.testhost");
                        PackageReferences.Add("microsoft.codecoverage");
                    }
                    else
                    {
                        PackageReferences.Add(name);
                    }
                }
            }

            foreach (var frameworkReference in _document.Descendants("FrameworkReference"))
            {
                // TODO naming .Ref?
                var name = frameworkReference.Attribute("Include").Value;
                PackageReferences.Add($"{name}.Ref");
            }

            foreach (var descendant in _document.Descendants("ProjectReference"))
            {
                var include = descendant.Attribute("Include").Value;
                var name    = Path.GetFileNameWithoutExtension(include);

                if (importLabels.ContainsKey(name))
                {
                    ProjectReference.Add(importLabels[name]);
                }
                else
                {
                    ProjectReference.Add(csprojToLabel(Path.Combine(projectFileDir, include)));
                }
            }

            foreach (var bazelDataArray in _document.Descendants("BazelData"))
            {
                BazelData.AddRange(bazelDataArray.Value.Split(';'));
            }

            foreach (var resource in _document.Descendants("EmbeddedResource"))
            {
                var include = resource.Attribute("Include")?.Value;
                var remove  = resource.Attribute("Remove")?.Value;
                var update  = resource.Attribute("Update")?.Value;

                if (include != null)
                {
                    EmbeddedResources.Add(new EmbeddedResourceDefinition(EmbeddedResourceType.Include, include));
                }
                if (remove != null)
                {
                    EmbeddedResources.Add(new EmbeddedResourceDefinition(EmbeddedResourceType.Remove, remove));
                }
                if (update != null)
                {
                    EmbeddedResources.Add(new EmbeddedResourceDefinition(EmbeddedResourceType.Update, update));
                }
            }

            foreach (var copyNode in _document.Descendants("CopyToOutputDirectory"))
            {
                // PreserveNewest ?

                var include = copyNode.Parent?.Attribute("Include")?.Value
                              ?? copyNode.Parent?.Attribute("Update")?.Value;
                if (include != null)
                {
                    CopyToOutput.Add(include.Replace("\\", "/"));
                }
            }

            TestOnly = string.Equals(_document.Descendants("BazelTestOnly").LastOrDefault()?.Value, "true", StringComparison.OrdinalIgnoreCase);

            return(this);
        }