hutongqing
2024-11-27 7ff298c6834275b63b612af49651673689a39660
WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/RuntimeExtension.cs
@@ -12,30 +12,32 @@
{
    public static class RuntimeExtension
    {
        private static readonly List<string> ProjectAssemblies =new() { "WIDESEAWCS" };
        /// <summary>
        /// 获取项目程序集,排除所有的系统程序集(Microsoft.***、System.***等)、Nuget下载包
        /// </summary>
        /// <returns></returns>
        public static IList<Assembly> GetAllAssemblies()
        {
            var list = new List<Assembly>();
            var deps = DependencyContext.Default;
            //只加载项目中的程序集
            var libs = deps.CompileLibraries.Where(lib => !lib.Serviceable && lib.Type == "project"); //排除所有的系统程序集、Nuget下载包
            foreach (var lib in libs)
            var assemblies = new List<Assembly>();
            var dllFiles = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");
            foreach (var dllFile in dllFiles)
            {
                var fileName = Path.GetFileNameWithoutExtension(dllFile);
                if (!ProjectAssemblies.Any(s => fileName.StartsWith(s))) continue;
                try
                {
                    var assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(lib.Name));
                    list.Add(assembly);
                    var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(dllFile);
                    assemblies.Add(assembly);
                }
                catch (Exception e)
                {
                    //Log.Debug(e, "GetAllAssemblies Exception:{ex}", e.Message);
                    Console.WriteLine($"Failed to load assembly: {fileName}. Error: {e.Message}");
                }
            }
            return list;
            return assemblies;
        }
        public static Assembly GetAssembly(string assemblyName)