加载 DLL 时出错 - 控制台应用程序 - Visual Studio Community 2022

Error loading DLL - Console App - Visual Studio Community 2022

我正在尝试在 Visual Studio 社区 2022 中创建的控制台应用程序项目中加载第三方 DLL。环境是 Windows10。我已经尝试了 .NET 5.0 和 6.0

无论我尝试过什么,我都会收到错误“未处理的异常。System.BadImageFormatException:错误的 IL 格式。文件的格式无效。”

我已经检查过,通常这个错误是因为我试图在 x86 应用程序或反之亦然中加载 x64 DLL,但我知道情况并非如此,因为:

日志只说

INFO: 2.23.00 12:14:27(00000015) PCLService.cpp:138 [22.11.2021] logCreate

INFO: 2.23.00 12:14:27(00000000) PCLService.cpp:141 PDA_Manager: DllMain attached

INFO: 2.23.00 12:14:27(00000000) PCLService.cpp:145 PDA_Manager: DllMain detach

通常,分离应该只在 DLL unloaded/program 关闭时发生。在这里它自动发生。就像程序无法保持DLL加载,给出错误信息。

这是我当前的代码。

using System;
using System.Reflection;

namespace ConsoleApp5
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //var DLL = Assembly.LoadFile(@"C:\Documentacion\VisaNet\Proyectos\Simpler\bin\Debug\x86\PCLService.dll");
            var DLL = Assembly.LoadFrom("PCLService.dll");
            Console.ReadLine();
        }
    }
}

我已经尝试了 LoadFrom() 和 LoadFile()。甚至尝试了 Load(),但错误与我不知道如何获取的附加信息不同。

我检查了 Assembly Binding Log Viewer (fuslogvw.exe) 和 Process Monitor。我没有看到任何明显的问题。

我假设无论发生什么错误,它确实在关于 PCLService.log 的最后 4 个条目时发生登录 Process Monitor。

虽然我是一名经验丰富的程序员,但我对 Visual Studio / C#

完全陌生

欢迎任何帮助。

要调用本机 dll,您必须将 [DllImport] 与函数原型一起使用。任何 Assembly.LoadXXX() 方法仅适用于托管库。也许 Using a 32bit or 64bit dll in C# DllImport 能帮到你。