Coc*_*lla 6 .net c++ managed-c++ .net-core .net-core-3.0
我非常兴奋地看到 .NET Core 3.1 和 Visual Studio 2019 的最新预览版增加了对托管 C++/CLI 项目的支持,因为这样的项目是在 .NET Framework 上保留特定项目的唯一想法。
因此,我安装了 Visual Studio Preview 16.4.0 Preview 4 以及“C++/CLI support for v142...”选项,正如预期的那样,我看到了新的 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)
Run Code Online (Sandbox Code Playgroud)
托管程序集和测试应用程序均以 X64 为目标。任何想法可能是什么问题?
Microsoft 的某个人在Github 存储库上提供了解决方案。
构建托管 C++/CLI 项目时,一个文件ijwhost.dll将放置在程序集旁边的输出文件夹中 - 该文件需要与使用程序集的应用程序一起部署。
放入ijwhost.dll与应用程序相同的文件夹后,它按预期工作。
顺便说一句,我针对 .NET Core 3.1 预览版构建的旧 C++/CLI 项目实际上非常复杂 - 我非常惊喜地发现它基本上“正常工作”!
希望将来会使用更好的错误消息!
| 归档时间: |
|
| 查看次数: |
1586 次 |
| 最近记录: |