말랑말랑제리스타일

C# "Interop 형식을 포함할 수 없습니다"에러 원인 및 해결 방법 본문

프로그래밍/C# OpenCV

C# "Interop 형식을 포함할 수 없습니다"에러 원인 및 해결 방법

제리제리 2022. 3. 30. 16:27

C# .NET 4.0 이상 버전에서 특정 라이브러리를 참조할 경우 Interop 형식을 포함할 수 없다는 에러가 발생합니다.

대표적인 상황이 Microsoft.Office.Interop.Excel 같은 Microsoft 오피스 라이브러리를 참조하는 경우인데요.

왜 이런 에러가 발생한 건지 원인과 해결 방법을 알아보겠습니다.

Interop 형식 에러 발생 원인

반응형

C# .NET 3.5까지는 배포할 필요가 없도록 설정된 interop 어셈블리가 참조에서 제외됩니다.

하지만 C# .NET 4.0에서는 이 interop 어셈블리를 포함시킬 수 있고 Interop 형식 에러가 발생했다면 포함되고 있을 가능성이 상당히 높습니다.

따라서 .NET 3.5에서 작성한 코드를 C# .NET 4.0에서 동일하게 사용하는 경우 Interop 형식 에러가 발생할 수 있는 거죠.

Interop 형식 관련 에러 해결 방법

반응형

Interop 형식 관련 에러를 해결하는 방법은 2가지가 있습니다.

하나는 라이브러리 참조 속성에서 Interop 형식을 제외하는 방법이고 다른 하나는 Interop 형식이 있는 클래스를 사용하지 않는 방법입니다.

두 가지 해결 방법을 하나씩 알아봅시다.

Interop 형식을 제외하는 방법

프로젝트 참조에서 Interop 형식 에러가 발생한 참조를 선택해 속성을 확인해봅시다.

Interop 참조 속성 확인하는 화면
Interop 참조 속성

Interop 형식 포함에 True로 설정된 것을 확인할 수 있습니다.

이 Interop 형식 포함을 False로 바꿔주면 Interop 형식을 참조에서 제외하게 되고 에러가 해결됩니다.

Interop 형식이 있는 클래스 변경

만약 다른 부분에서 Interop 형식을 필요로 한다면 전체 소스에서 Interop 형식을 제외하는 것은 바람직하지 않습니다.

그 대신 Microsoft Office Interop 라이브러리를 참조했는데 이런 에러가 발생했다면 ApplicationClass라는 클래스를 사용했을 텐데요.

이 ApplicationClass 클래스 대신 Application 클래스를 사용해주는 방법이 있습니다.

이렇게 ApplicationClass를 Application으로 변경할 경우 또다시 모호한 참조 에러가 발생할 수 있는데요.

이 경우 아래와 같이 참조되는 전체 경로를 적어주시면 됩니다.

반응형
Microsoft.Office.Interop.Excel.Application _app = new Microsoft.Office.Interop.Excel.Application();

 

반응형
Comments