。NET Core 3.1中运行托管的C ++ / CLI程序集时,图像格式不良

问题描述 投票:0回答:1

[我很高兴看到.NET Core 3.1和Visual Studio 2019 add support for managed C++/CLI projects的最新预览,因为这样的项目是在.NET Framework上保留特定项目的唯一想法。

因此,我安装了Visual Studio Preview 16.4.0 Preview 4,以及“ v142 ...的C ++ / CLI支持...”选项,并且按预期,我看到了新的C ++ CLR模板并安装了.NET Core 3.1 Preview 2

我使用“ CLR类库(.NET Core)”模板创建了一个新项目,将文件复制到一个旧的托管C ++ / CLI项目中,进行了一些微调,并构建了程序集-很棒!

但是,当我尝试在.NET Core 3.1中使用程序集时,出现此致命异常:

Unhandled exception. System.BadImageFormatException: Could not load file or assembly 'MyAssembly, Version=2019.0.1.0, Culture=neutral, PublicKeyToken=null'. An attempt was made to load a program with an incorrect format.
File name: 'MyAssembly, Version=2019.0.1.0, Culture=neutral, PublicKeyToken=null'
   at TestApp.Program.Main(String[] args)

两者都是托管程序集和测试应用程序目标X64。任何想法可能是什么问题?

c++ .net .net-core managed-c++ .net-core-3.0
1个回答
0
投票
Microsoft的某人在Github repo上提供了解决方案。

[构建托管C ++ / CLI项目时,文件ijwhost.dll被放置在程序集旁边的输出文件夹中-该文件需要与使用该程序集的应用一起部署。

ijwhost.dll放置在与应用程序相同的文件夹中,然后按预期工作。

顺便说一句,我根据.NET Core 3.1预览版构建的旧C ++ / CLI项目实际上非常复杂-我

非常令人惊讶的是它基本上“可以正常工作”!

希望将来会使用更好的错误消息!
© www.soinside.com 2019 - 2024. All rights reserved.