Example #1
0
        public override bool Execute()
        {
            Log.LogDebugMessage("CheckTargetFrameworks Task");
            Log.LogDebugMessage("  TargetFrameworkVersion: {0}", TargetFrameworkVersion);
            Log.LogDebugMessage("  ProjectFile: {0}", ProjectFile);
            Log.LogDebugTaskItems("  ResolvedUserAssemblies: {0}", ResolvedAssemblies);

            res = new DirectoryAssemblyResolver(Log.LogWarning, loadDebugSymbols: false);
            foreach (var assembly in ResolvedAssemblies)
            {
                res.Load(Path.GetFullPath(assembly.ItemSpec));
                var apiLevel = ExtractApiLevel(assembly);
                if (apiLevel > 0)
                {
                    Log.LogDebugMessage("{0}={1}", Path.GetFileNameWithoutExtension(assembly.ItemSpec), apiLevel);
                    apiLevels.Add(assembly, apiLevel);
                }
            }

            var mainapiLevel = AndroidVersion.TryOSVersionToApiLevel(TargetFrameworkVersion);

            foreach (var item in apiLevels.Where(x => mainapiLevel < x.Value))
            {
                var itemOSVersion = AndroidVersion.TryApiLevelToOSVersion(item.Value);
                Log.LogWarning(null, "XA0105", null, ProjectFile, 0, 0, 0, 0,
                               "The $(TargetFrameworkVersion) for {0} (v{1}) is greater than the $(TargetFrameworkVersion) for your project ({2}). " +
                               "You need to increase the $(TargetFrameworkVersion) for your project.", Path.GetFileName(item.Key.ItemSpec), itemOSVersion, TargetFrameworkVersion);
            }

            return(!Log.HasLoggedErrors);
        }
Example #2
0
        Version GetJavaVersionForFramework(string targetFrameworkVersion)
        {
            var apiLevel = AndroidVersion.TryOSVersionToApiLevel(targetFrameworkVersion);

            if (apiLevel >= 24)
            {
                return(new Version(1, 8));
            }
            else if (apiLevel == 23)
            {
                return(new Version(1, 7));
            }
            else
            {
                return(new Version(1, 6));
            }
        }
Example #3
0
 int ExtractApiLevel(ITaskItem ass)
 {
     Log.LogDebugMessage(ass.ItemSpec);
     foreach (var ca in res.GetAssembly(ass.ItemSpec).CustomAttributes)
     {
         switch (ca.AttributeType.FullName)
         {
         case "System.Runtime.Versioning.TargetFrameworkAttribute":
             foreach (var p in ca.ConstructorArguments)
             {
                 var value = p.Value.ToString();
                 if (value.StartsWith("MonoAndroid"))
                 {
                     var values = value.Split('=');
                     return(AndroidVersion.TryOSVersionToApiLevel(values[1]));
                 }
             }
             break;
         }
     }
     return(0);
 }