LynnaLab.PluginCore.PluginCore C# (CSharp) Method

PluginCore() public method

public PluginCore ( MainWindow window ) : System
window MainWindow
return System
        public PluginCore(MainWindow window)
        {
            mainWindow = window;

            // Force all referenced assemblies to load so that I can find them
            var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();

            loadedAssemblies
                .SelectMany(x => x.GetReferencedAssemblies())
                .Distinct()
                .Where(y => loadedAssemblies.Any((a) => a.FullName == y.FullName) == false)
                .ToList()
                .ForEach(x => loadedAssemblies.Add(AppDomain.CurrentDomain.Load(x)));

            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
            List<string> references = new List<string>();
            references.Add("LynnaLab.exe");

            for (int i=0;i<assemblies.Length;i++) {
                try {
                    if (Environment.OSVersion.Platform == PlatformID.Win32Windows
                        || Environment.OSVersion.Platform == PlatformID.Win32NT
                        || Environment.OSVersion.Platform == PlatformID.Win32S
                        || Environment.OSVersion.Platform == PlatformID.WinCE) {
                        references.Add(assemblies[i].CodeBase.Replace("file:///", ""));
                    }
                    else {
                        references.Add(assemblies[i].CodeBase.Replace("file:///", "/"));
                    }
                    Console.WriteLine("Reference: \"" + references[references.Count-1] + "\"");
                }
                catch (System.NotSupportedException) {
                    Console.WriteLine("1 reference failed: " + assemblies[i]);
                }
            }
            referencedAssemblies = references.ToArray();
        }