Error: Could not load file or assembly or one of its dependencies

274 阅读1分钟

Error: Could not load file or assembly or one of its dependencies

可以使用Fuslogvm.exe 来帮助调查

Fuslogvm.exe

程序集绑定日志查看器显示程序集绑定的详细信息。此信息可帮助您诊断 .NET Framework 无法在运行时定位程序集的原因。

image.png Steps to enable assembly binding via Fusion Log Viewer:

  1. 点击 fuslogvw.exe 
  2. 点击 Settings 设定log文件的输出目录等
  3. 运行需要观察的程序
  4. 点击 Refresh
  5. 选择刷新出来的需要观察的程序
  6. 点击 View Log

可能的解决方案:将assembly loading和程序的其他部分分隔开

        static void Main(string[] args)
        {
            LoadAssemblies();
            MainCore(args);
        }

        [MethodImpl(MethodImplOptions.NoInlining)]
        static void MainCore(string[] args)
        {
        }
        
        private static void LoadAssemblies()
        {
            AppDomain.CurrentDomain.AssemblyResolve += (s, args) =>
            {
                var installFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

                return new[] { "", "Reference" }
                    .Select(subFolder => Path.Combine(installFolder, "DemoProject", subFolder, new AssemblyName(args.Name).Name + ".dll"))
                    .Where(File.Exists)
                    .Select(Assembly.LoadFrom)
                    .FirstOrDefault();
            };
        }