"stdole.dll 어셈블리의 강력한 이름 서명이 잘못되었습니다" 등으로 dll 파일 명과 함께 오류가 발생한다.
나의 경우 Microsoft.Office.Interop.Excel 을 참조하여 엑셀 파일을 읽어서 출력하는 기능을 프로그램에 넣고,
Click Once(클릭원스)를 통해 배포하였는데 일부 사용자 PC에서 해당 오류가 발생하였다.
구글 검색을 통해 알아낸 방법으로 자체 해결 하였고, 나름데로 원인으로 예상되는 부분을 기록으로 남긴다.
Microsoft.Office.Interop.Excel 의 경우 여러가지 dll을 사용하게 되는데 이중 stdole.dll 이 포함되어 있다.
구글 검색 결과 닷넷에 포함되어 있는 것과 Visual studio 에 포함(문제있는 파일)되어 있는 것이 달라서 발생하는 문제로 실제로 확인해보면 'C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies' 경로의 stdole.dll 과 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office11' 경로의 stdole.dll이 용량부터 차이가 나는 것을 볼 수 있었다. (참고로 구글 검색결과의 경로와 나의 Visual studio 경로에서 stoole.dll이 위치한 경로는 달랐다. 'C:\Program Files (x86)\Microsoft Visual Studio...' 로 시작되는 경로를 다 찾아서 stdole.dll의 위치를 찾았다. 사용자 마다 다를 수 있다는 이야기다.)
아무튼 Visual studio에서 Microsoft.Office.Interop.Excel 참조 후 빌드 또는 게시 할 때 'C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies' 경로의 dll을 사용하지 않고, Visual studio의 dll을 사용하는 것으로 보인다.
따라서, 'C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies' 경로의 dll로 Visual studio의 dll을 교체 해주고 배포하니 문제가 해결 되었다. 실제 배포 경로의 stdole.deploy 파일의 용량이 변경되어서 생성 되었다.
'프로그래밍 > 기타' 카테고리의 다른 글
윈도우에 boost library 빌드 (0) | 2016.01.11 |
---|---|
"\Microsoft은(는) 예상되지 않았습니다." 오류 해결 (0) | 2016.01.11 |
[DevExpress] Wait Indicator 가 화면에 나타나지 않을 때 (0) | 2015.11.10 |
소켓(socket)? (0) | 2015.05.14 |
Device server? (0) | 2015.05.14 |