Ejemplo n.º 1
0
        static string[] GetCachedSystemLibraryReferences(ApiCompatibilityLevel apiCompatibilityLevel)
        {
            // We cache the references because they are computed by getting files in directories on disk,
            // which is very slow.
            if (cachedReferences != null && cachedReferences.ApiCompatibilityLevel == apiCompatibilityLevel)
            {
                return(cachedReferences.References);
            }

            var references = new List <string>();
            var monoAssemblyDirectories = GetSystemReferenceDirectories(apiCompatibilityLevel);

            if (apiCompatibilityLevel == ApiCompatibilityLevel.NET_Standard)
            {
                references.AddRange(GetNetStandardClassLibraries());
            }
            else if (apiCompatibilityLevel == ApiCompatibilityLevel.NET_Unity_4_8)
            {
                var systemReferences           = GetSystemReferences().FindReferencesInDirectories(monoAssemblyDirectories);
                var net46References            = GetNet46SystemReferences().FindReferencesInDirectories(monoAssemblyDirectories);
                var additionalSystemReferences = FindAllFilesInDirectories(monoAssemblyDirectories, "System.*.dll");
                var facades = Directory.GetFiles(Path.Combine(GetUnityReferenceProfileDirectory(), "Facades"), "*.dll");

                // Look in the mono assembly directory for a facade folder and get a list of all the DLL's to be
                // used later by the language compilers.
                references.AddRange(systemReferences
                                    .Concat(net46References)
                                    .Concat(additionalSystemReferences)
                                    .Concat(facades)
                                    .Distinct());
            }
            else
            {
                references.AddRange(GetSystemReferences().FindReferencesInDirectories(monoAssemblyDirectories));
            }

            cachedReferences = new CachedReferences
            {
                ApiCompatibilityLevel = apiCompatibilityLevel,
                References            = references.ToArray()
            };


            return(cachedReferences.References);
        }
        static string[] GetCachedSystemLibraryReferences(ApiCompatibilityLevel apiCompatibilityLevel)
        {
            // We cache the references because they are computed by getting files in directories on disk,
            // which is very slow.
            if (cachedReferences != null && cachedReferences.ApiCompatibilityLevel == apiCompatibilityLevel)
            {
                return(cachedReferences.References);
            }

            var references = new List <string>();
            var monoAssemblyDirectories = GetSystemReferenceDirectories(apiCompatibilityLevel);

            if (apiCompatibilityLevel == ApiCompatibilityLevel.NET_Standard_2_0)
            {
                references.AddRange(GetNetStandardClassLibraries());
            }
            else if (apiCompatibilityLevel == ApiCompatibilityLevel.NET_4_6)
            {
                references.AddRange(GetSystemReferences().FindReferencesInDirectories(monoAssemblyDirectories));
                references.AddRange(GetNet46SystemReferences().FindReferencesInDirectories(monoAssemblyDirectories));

                // Look in the mono assembly directory for a facade folder and get a list of all the DLL's to be
                // used later by the language compilers.
                var monoAssemblyDirectory = MonoInstallationFinder.GetProfileDirectory("4.7.1-api", MonoInstallationFinder.MonoBleedingEdgeInstallation);
                references.AddRange(Directory.GetFiles(Path.Combine(monoAssemblyDirectory, "Facades"), "*.dll"));

                references.AddRange(GetBooAndUsReferences().Select(dll => Path.Combine(MonoInstallationFinder.GetProfileDirectory("unityscript", MonoInstallationFinder.MonoBleedingEdgeInstallation), dll)));
            }
            else
            {
                references.AddRange(GetSystemReferences().FindReferencesInDirectories(monoAssemblyDirectories));
                references.AddRange(GetBooAndUsReferences().FindReferencesInDirectories(monoAssemblyDirectories));
            }

            cachedReferences = new CachedReferences
            {
                ApiCompatibilityLevel = apiCompatibilityLevel,
                References            = references.ToArray()
            };


            return(cachedReferences.References);
        }