簡體   English   中英

在 .NET Core 3.1 中運行托管 C++/CLI 程序集時出現錯誤的圖像格式

[英]Bad image format when running managed C++/CLI assembly in .NET Core 3.1

看到 .NET Core 3.1 和 Visual Studio 2019 的最新預覽版增加了對托管 C++/CLI 項目的支持,我感到非常興奮,因為這樣的項目是在 .NET 框架上保留特定項目的唯一想法。

因此,我安裝了 Visual Studio Preview 16.4.0 Preview 4,以及“C++/CLI support for v142 ...”選項,正如預期的那樣,我看到了新的 C++ CLR 模板並安裝了 .NET Core 3.1 preview 2

我使用“CLR Class 庫(.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 為目標。 任何想法可能是什么問題?

微軟的某個人在Github repo上提供了解決方案。

構建托管 C++/CLI 項目時,文件ijwhost.dll與程序集一起放置在 output 文件夾中 - 此文件需要與使用程序集的應用程序一起部署。

ijwhost.dll放在與應用程序相同的文件夾中后,它按預期工作。

順便說一句,我針對 .NET Core 3.1 預覽版構建的舊 C++/CLI 項目實際上非常復雜 - 我非常驚喜地發現它基本上“正常工作”!

希望將來會使用更好的錯誤消息!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM