ASH84

Software Engineer/Developer, co-founder of Payhere. Ex-Banksalad. Intereseted in iteroperability, bootstrap company, writting.

[C#] Click Once 배포오류 fileloadException에 대해서.

created:2011-02-24
updated:2015-07-03
edit
요즘 계속 배포작업을 하고 있습니다. 처음 배포 한 msi 파일이 배포오류가 생겼었는데, 그 오류를 자세히 들여가 보면 fileloadException 에 의해서 발생된 오류였다. 처음에는 기본적으로 ini 파일이나, 폰트파일 혹은 외부 dll 파일을 못 읽어서 문제가 생겼나 해서 예외처리를 한 상태에서 해 봤더니, 걸리지 않았다. 그래서 혹시나 해서 devpia에 찾아볼 결과 다음과 같은 결과가 나왔다. 
 
C++/CLI는 C#과는 달리 런타임 라이브러리를 사용하곤 합니다. (msvcm80.dll) 이 라이브러리는 닷넷 프레임워크와 함께 설치됩니다. 하지만 개발시에 Debug 빌드와 함게 사용되는 라이브러리는 Visual Studio 내에만 포함되어 있습니다. (msvcm80d.dll) 따라서 Debug 빌드로 작성된 exe를 사용하면 이들 디버그용 라이브러리를 찾으려고 할 것이고 이 라이브러리는 달랑 닷넷 프레임워크만 설치된 곳에는 존재하지 않기 때문에 오류가 발생합니다.   **배포에 사용하시려면 ** **Release 빌드를 배포하시거나 Debug용 런타임 라이브러리를 배포하셔야 합니다.**   도움이 되셨기를…
즉, 원 C# 으로 만든 프로젝트에 MixString 이라는 C++ 외부 라이브러리를 붙였는데, 빌드 형태의 Debug로 해서 빌드를 한후에 Click Once 프로젝트에서 해당 .exe 파일을 대상으로 빌드를 하고, 다른 컴퓨터에서 실행 시켰을 경우, 위와 같은 이유로 에러가 난다는 것이다. 
실제로 Release 로 빌드 형태를 바꾸어서 빌드하고, 배포프로젝트에 넣어서 빌드하니 다른 컴퓨터에서도 잘 되었다. 
[http://search.devpia.com/MAEULResult.aspx?KeyW=fileloadexception%20%uBC30%uD3EC%uC624%uB958%20&keyr=title&boardID=17&MAEULNo=8](http://search.devpia.com/MAEULResult.aspx?KeyW=fileloadexception%20%uBC30%uD3EC%uC624%uB958%20&keyr=title&boardID=17&MAEULNo=8)

#Ahn Seong Hyun  #c#  #Click Once  #dev  #fileloadexception  #배포오류  #클릭원스