.NET Core 3.1 및 Visual Studio 2019의 최신 미리보기가 관리되는 C ++ / CLI 프로젝트에 대한 지원을 추가하는 것을보고 매우 기뻤습니다. 이러한 프로젝트는 .NET Framework에서 특정 프로젝트를 유지하는 유일한 생각이기 때문입니다.
그래서 "v142에 대한 C ++ / CLI 지원 ..."옵션과 함께 Visual Studio Preview 16.4.0 Preview 4를 설치했으며, 예상대로 새로운 C ++ CLR 템플릿이 표시되고 .NET Core 3.1 미리보기 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를 대상으로합니다. 문제가 될 수있는 아이디어가 있습니까?
Microsoft의 누군가가 Github 저장소를 통해 솔루션을 제공했습니다 .
관리되는 C ++ / CLI 프로젝트가 빌드되면 ijwhost.dll
어셈블리와 함께 출력 폴더에 파일 이 배치됩니다.이 파일은 어셈블리를 사용하는 앱과 함께 배포되어야합니다.
ijwhost.dll
앱과 같은 폴더에 넣으면 예상대로 작동합니다.
제쳐두고 .NET Core 3.1 미리보기에 대해 빌드 한 이전 C ++ / CLI 프로젝트는 실제로 매우 복잡 합니다. 기본적으로 "그냥 작동"했다는 사실에 매우 놀랐습니다!
앞으로 더 나은 오류 메시지가 사용되기를 바랍니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다