.NET Framework 4.0 을 기반으로 VSTO 애플리케이션을 작성하는데,

참조로 다른 DLL을 가져다 쓰고 빌드를 하려니 이런 오류가 발생한다.

"혼합 모드 어셈블리는 런타임의 버전 'v2.0.50727'에 대해 빌드되며 추가 구성 정보 없이 '4.0' 런타임에 로드할 수 없습니다."

 

그럼 하위버전의 DLL을 같이 쓸수 없다는말인가?!  하위호환성을 중요시하는 MS의 닷넷인데?!

찾아보니 간단한 해결방법이 있었다.

App.config 파일 (응용프로그램 설정을 사용하게 되면 자동으로 생김) 에 몇줄 추가해 주는 방법이 그것이다.

일단 App.config파일이 없다면  [프로젝트]-[추가]-[구성 요소] 에서 "응용 프로그램 구성 파일"을 추가해주면 된다.

여기에 아래의 코드를 적어넣고 저장후 다시 빌드를 하면 오류가 발생하지 않는단다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

 

그런데,,,,,,,,,,

app.config를 만들어 놓고  아무리 빌드를 다시 해보아도 동일한 에러가 발생한다. 해결이 안된다. OTL

이유인즉슨, 일반 윈폼프로그램이 아닌 VSTO( Visual Studio Tools for Office ) 애플리케이션이기 때문이다.

이 app.config는 실행파일을 기준으로 동작을 하는 모양이다.

VSTO 로 개발된 프로그램은 (나의 경우는 Excel 문서수준 사용자지정 애플리케이션) 당연히 OFFICE를 기반으로 실행된다.

그래서 또 열심히 구글링을 한 결과 Office의 실제 실행파일 옆에 app.config를 만들어야 한다는 사실을 알게 되었다.

오피스2010버전 엑셀의 경우

C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE 

이게 실행파일이다.

그래서 동일한 폴더에 동일한 파일명으로 .config를 생성했다.

C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE.config

물론 파일의 내용은 위의 코드와 동일하게 해서..

 

이제 빌드를 해보니 혼합 어셈블리 빌드가 성공적으로 잘 된다.

 

 

+ Recent posts