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); }