Esempio n. 1
0
 internal static string[] GetPrecompiledAssemblyNames(PrecompiledAssemblyProviderBase precompiledAssemblyProvider)
 {
     return(precompiledAssemblyProvider.GetPrecompiledAssemblies(true, EditorUserBuildSettings.activeBuildTargetGroup, EditorUserBuildSettings.activeBuildTarget)
            .Where(x => (x.Flags & sc.AssemblyFlags.UserAssembly) == sc.AssemblyFlags.UserAssembly)
            .Select(x => AssetPath.GetFileName(x.Path))
            .ToArray());
 }
        public override void OnEnable()
        {
            base.OnEnable();
            m_AssemblyName = extraDataSerializedObject.FindProperty("assemblyName");
            InitializeReorderableLists();
            m_SemVersionRanges          = new SemVersionRangesFactory();
            m_AllowUnsafeCode           = extraDataSerializedObject.FindProperty("allowUnsafeCode");
            m_UseGUIDs                  = extraDataSerializedObject.FindProperty("useGUIDs");
            m_AutoReferenced            = extraDataSerializedObject.FindProperty("autoReferenced");
            m_OverrideReferences        = extraDataSerializedObject.FindProperty("overrideReferences");
            m_CompatibleWithAnyPlatform = extraDataSerializedObject.FindProperty("compatibleWithAnyPlatform");
            m_PlatformCompatibility     = extraDataSerializedObject.FindProperty("platformCompatibility");
            m_NoEngineReferences        = extraDataSerializedObject.FindProperty("noEngineReferences");
            m_AssemblyProvider          = EditorCompilationInterface.Instance.PrecompiledAssemblyProvider;

            AssemblyReloadEvents.afterAssemblyReload += AfterAssemblyReload;
        }
        public override void OnEnable()
        {
            base.OnEnable();

            //Ensure UIElements handles the IMGUI container with margins
            alwaysAllowExpansion = true;

            m_AssemblyName = extraDataSerializedObject.FindProperty("assemblyName");
            InitializeReorderableLists();
            m_SemVersionRanges.Clear();
            m_UnityVersionRanges.Clear();
            m_RootNamespace             = extraDataSerializedObject.FindProperty("rootNamespace");
            m_AllowUnsafeCode           = extraDataSerializedObject.FindProperty("allowUnsafeCode");
            m_UseGUIDs                  = extraDataSerializedObject.FindProperty("useGUIDs");
            m_AutoReferenced            = extraDataSerializedObject.FindProperty("autoReferenced");
            m_OverrideReferences        = extraDataSerializedObject.FindProperty("overrideReferences");
            m_CompatibleWithAnyPlatform = extraDataSerializedObject.FindProperty("compatibleWithAnyPlatform");
            m_PlatformCompatibility     = extraDataSerializedObject.FindProperty("platformCompatibility");
            m_NoEngineReferences        = extraDataSerializedObject.FindProperty("noEngineReferences");
            m_AssemblyProvider          = EditorCompilationInterface.Instance.PrecompiledAssemblyProvider;
            m_AssetIsReadonly           = false;
            foreach (var assetPath in targets.OfType <AssetImporter>().Select(i => i.assetPath))
            {
                try
                {
                    using (var fs = File.Open(assetPath, FileMode.Open, FileAccess.Write)) {}
                }
                catch
                {
                    // can't open in write mode, must be readonly
                    m_AssetIsReadonly = true;
                }
            }

            AssemblyReloadEvents.afterAssemblyReload += AfterAssemblyReload;
        }
Esempio n. 4
0
        internal static string GetPrecompiledAssemblyPathFromAssemblyName(string assemblyName, PrecompiledAssemblyProviderBase precompiledAssemblyProvider)
        {
            var precompiledAssemblies = precompiledAssemblyProvider.GetPrecompiledAssemblies(true, EditorUserBuildSettings.activeBuildTargetGroup, EditorUserBuildSettings.activeBuildTarget);

            foreach (var assembly in precompiledAssemblies)
            {
                if ((assembly.Flags & sc.AssemblyFlags.UserAssembly) == sc.AssemblyFlags.UserAssembly && AssetPath.GetFileName(assembly.Path) == assemblyName)
                {
                    return(assembly.Path);
                }
            }
            return(null);
        }
Esempio n. 5
0
        internal static string[] GetPrecompiledAssemblyPaths(PrecompiledAssemblySources precompiledAssemblySources, PrecompiledAssemblyProviderBase precompiledAssemblyProvider)
        {
            HashSet <string> assemblyNames = new HashSet <string>();

            sc.AssemblyFlags flags = sc.AssemblyFlags.None;
            if ((precompiledAssemblySources & PrecompiledAssemblySources.SystemAssembly) != 0)
            {
                foreach (var a in MonoLibraryHelpers.GetSystemLibraryReferences(ApiCompatibilityLevel.NET_4_6, Scripting.ScriptCompilers.CSharpSupportedLanguage))
                {
                    assemblyNames.Add(a);
                }
            }

            if ((precompiledAssemblySources & PrecompiledAssemblySources.UnityEngine) != 0)
            {
                flags |= sc.AssemblyFlags.UnityModule;
            }

            if ((precompiledAssemblySources & PrecompiledAssemblySources.UnityEditor) != 0)
            {
                flags |= sc.AssemblyFlags.EditorOnly;
            }

            if ((precompiledAssemblySources & PrecompiledAssemblySources.UserAssembly) != 0)
            {
                flags |= sc.AssemblyFlags.UserAssembly;
            }

            var precompiledAssemblies = precompiledAssemblyProvider.GetPrecompiledAssemblies(true, EditorUserBuildSettings.activeBuildTargetGroup, EditorUserBuildSettings.activeBuildTarget).Concat(EditorCompilationInterface.Instance.GetUnityAssemblies());

            foreach (var a in precompiledAssemblies.Where(x => (x.Flags & flags) != 0))
            {
                assemblyNames.Add(a.Path);
            }

            return(assemblyNames.ToArray());
        }
        internal static string GetPrecompiledAssemblyPathFromAssemblyName(string assemblyName, PrecompiledAssemblyProviderBase precompiledAssemblyProvider, string[] extraScriptingDefines = null)
        {
            var precompiledAssemblies = precompiledAssemblyProvider.GetPrecompiledAssemblies(
                EditorScriptCompilationOptions.BuildingForEditor | EditorScriptCompilationOptions.BuildingWithAsserts,
                EditorUserBuildSettings.activeBuildTargetGroup,
                EditorUserBuildSettings.activeBuildTarget,
                extraScriptingDefines);

            foreach (var assembly in precompiledAssemblies)
            {
                if ((assembly.Flags & sc.AssemblyFlags.UserAssembly) == sc.AssemblyFlags.UserAssembly && AssetPath.GetFileName(assembly.Path) == assemblyName)
                {
                    return(assembly.Path);
                }
            }
            return(null);
        }
        internal static string[] GetPrecompiledAssemblyPaths(PrecompiledAssemblySources precompiledAssemblySources, PrecompiledAssemblyProviderBase precompiledAssemblyProvider, BuildTargetGroup buildTargetGroup, BuildTarget buildTarget)
        {
            HashSet <string> assemblyNames = new HashSet <string>();

            sc.AssemblyFlags flags = sc.AssemblyFlags.None;
            if ((precompiledAssemblySources & PrecompiledAssemblySources.SystemAssembly) != 0)
            {
                foreach (var a in MonoLibraryHelpers.GetSystemLibraryReferences(ApiCompatibilityLevel.NET_Unity_4_8))
                {
                    assemblyNames.Add(a);
                }
            }

            if ((precompiledAssemblySources & (PrecompiledAssemblySources.UnityEngine | precompiledAssemblySources & PrecompiledAssemblySources.UnityAssembly)) != 0)
            {
                flags |= sc.AssemblyFlags.UnityModule;
            }

            if ((precompiledAssemblySources & (PrecompiledAssemblySources.UnityEditor | precompiledAssemblySources & PrecompiledAssemblySources.UnityAssembly)) != 0)
            {
                flags |= sc.AssemblyFlags.EditorOnly;
            }

            if ((precompiledAssemblySources & PrecompiledAssemblySources.UserAssembly) != 0)
            {
                flags |= sc.AssemblyFlags.UserAssembly;
            }

            var precompiledAssemblies = precompiledAssemblyProvider.GetPrecompiledAssemblies(
                EditorScriptCompilationOptions.BuildingForEditor | EditorScriptCompilationOptions.BuildingWithAsserts,
                buildTargetGroup,
                buildTarget)
                                        .Concat(precompiledAssemblyProvider.GetUnityAssemblies(true, buildTarget));

            foreach (var a in precompiledAssemblies.Where(x => (x.Flags & flags) != 0))
            {
                assemblyNames.Add(a.Path);
            }

            return(assemblyNames.ToArray());
        }
 internal static string[] GetPrecompiledAssemblyPaths(PrecompiledAssemblySources precompiledAssemblySources, PrecompiledAssemblyProviderBase precompiledAssemblyProvider)
 {
     return(GetPrecompiledAssemblyPaths(precompiledAssemblySources, precompiledAssemblyProvider, EditorUserBuildSettings.activeBuildTargetGroup, EditorUserBuildSettings.activeBuildTarget));
 }
    public ILPostProcessCompiledAssembly(EditorBuildRules.TargetAssembly targetAssembly, string outputPath, PrecompiledAssemblyProviderBase precompiledAssemblyProvider)
    {
        m_AssemblyFilename = targetAssembly.Filename;

        Name = Path.GetFileNameWithoutExtension(m_AssemblyFilename);

        var precompiledAssembliesDictionary = precompiledAssemblyProvider.GetPrecompiledAssembliesDictionary(true, BuildTargetGroup.Unknown, BuildTarget.Android);

        var precompiledAssemblyReferences = targetAssembly.ExplicitPrecompiledReferences
                                            .Where(x => precompiledAssembliesDictionary.ContainsKey(x))
                                            .Select(x => precompiledAssembliesDictionary[x].Path);
        var targetAssemblyReferences = targetAssembly.References.Select(a => a.FullPath(outputPath));

        References = precompiledAssemblyReferences.Concat(targetAssemblyReferences).ToArray();
        Defines    = targetAssembly.Defines;

        m_OutputPath = outputPath;
    }