Dll C“CLR例外情况”;BadImageFormatException:无法加载文件或程序集;

Dll C“CLR例外情况”;BadImageFormatException:无法加载文件或程序集;,dll,reference,clr,ref,.net-5,Dll,Reference,Clr,Ref,.net 5,我使用的是VS2019版本16.8.2 我在“WPF应用程序(.NET)”项目中引用了一个“CLR类库(.NET核心)”项目,遇到了一个异常: BadImageFormatException: Could not load file or assembly 'LibCLR, Version=1.0.7646.21580, Culture=neutral, PublicKeyToken=null'. An attempt was made to load a program with an in

我使用的是VS2019版本16.8.2

我在“WPF应用程序(.NET)”项目中引用了一个“CLR类库(.NET核心)”项目,遇到了一个异常:

BadImageFormatException: Could not load file or assembly 'LibCLR, Version=1.0.7646.21580, Culture=neutral, PublicKeyToken=null'. An attempt was made to load a program with an incorrect format.
让我先谈谈我是怎么做到的

  • 创建一个“WPF应用(.NET)”项目“TestCLR”

  • 在此解决方案中添加新的“CLR类库(.NET Core)”项目“LibCLR”

  • “LibCLR”的“公共语言运行时支持”设置

  • 目标“TestCLR”到“.NET 5.0”

  • “LibCLR.h”是在项目“LibCLR”中自动创建的,其中包含代码

  • 在项目“TestCLR”的MainWindow.xaml.cs中添加“new LibCLR.Class1();”
  • 使用System.Windows;
    命名空间TestCLR{
    /// 
    ///MainWindow.xaml的交互逻辑
    /// 
    公共部分类主窗口:窗口{
    公共主窗口(){
    初始化组件();
    新LibCLR.Class1();
    }
    }
    }
    
  • 重建所有并调试,然后我遇到异常

  • 然后我将解决方案平台更改为x64或x84,例外情况相同。

  • 如果我在步骤1中为“TestCLR”选择“WPF App(.NET Framework)”,在步骤2中为“LibCLR”选择“CLR类库(.NET Framework)”,效果会很好

  • 为什么它不起作用? 我不能将“CLR类库(.NET)”项目用作“WPF应用(.NET核心)”项目中的项目引用吗?
    如何解决此问题?

    最常见的答案是在x86和x64目标之间切换。在对原始问题的评论中,您提到您尝试过,但对您无效。所以,我有一个建议。您正在构建一个WPF项目,目标是Dotnet5.0。dotnet5.0是操作系统不可知论者。WPF是特定于操作系统的。它需要窗户

    尝试使用操作系统特定的目标框架名字对象。打开两个项目的.csproj文件。尝试将两个项目都设置为
    net5.0-windows

    清洁溶液、重建和测试

    我们这里有一个依赖于Windows的解决方案。我们不应该让去做,但让我们尝试明确地瞄准它。特别是C++项目。 更多阅读


    您应该在此处将平台目标更改为“X86”

    屏幕截图:“平台:[活动(Win32)]”。这将构建x86(又名32位)版本的DLL。它不能用于以64位模式运行的.NETCore项目中。改为构建x64版本。您好,我尝试了x86和x64,但都不起作用。您不能将.NET 5类库加载到.NET framework应用程序中,这就是您要做的吗?但我以“.NET 5.0”作为目标,这是错误的吗?您能共享.csproj文件吗?
    #pragma once
    
    using namespace System;
    
    namespace LibCLR {
        public ref class Class1
        {
            // TODO: Add your methods for this class here.
        };
    }
    
    using System.Windows;
    
    namespace TestCLR {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();
                new LibCLR.Class1();
            }
        }
    }