none
C# user Control이 포함된 MFC 어플리케이션의 배포문제. RRS feed

  • 질문

  • C# UserControl.dll파일을 MFC 어플리케이션에 사용하였습니다.

    개발된 컴퓨터에서는 문제없이 출력이 되나,

    다른 컴퓨터에 copy 경우,

     

    에러메세지가 뜨는데, detail은 다음과 같습니다.

    Problem Event Name:      CLR20r3

      Problem Signature 01:  mfcapplication1.exe

      Problem Signature 02:  1.0.0.1

      Problem Signature 03:  55efd02e

      Problem Signature 04:  System.Windows.Forms

      Problem Signature 05:  4.0.30319.18408

      Problem Signature 06:  52311103

      Problem Signature 07:  c2b

      Problem Signature 08:  36

      Problem Signature 09:  N3CTRYE2KN3C34SGL4ZQYRBFTE4M13NB

      OS Version:     6.1.7601.2.1.0.256.1

      Locale ID:       1042

     

    위와 같이 에러가 발생 합니다.

     

    제가 시도한 방법은 아래와 같습니다.

    Visual Studio 2015 버전 이용하고 있습니다.

    기본 Framework 4.0 사용합니다

    다른 컴퓨터에서는 재배포 패키지를 깔아 보았습니다.

    1. C# User Control(dll) 포함하지 않는 MFC 프로그램은 다른 컴퓨터에 옮겼을때, 잘됩니다.

    2. C# User Control(dll) 포함한 MFC 프로그램은 다른 컴퓨터에 옮겼을때, 안됩니다.

    3. C# User Control(dll) 포함했을때 프로그램에서 요청하는, mfc140ud.dll파일 관련 모든 dll 실행파일과 같이 copy하여 실행해도 안됩니다.(정적 MFC, 공용 DLL사용 둘다 Test)

     

    결론은,

    C# MFC 넣어 혼용시 C# 관련 Framework 필요하다고 생각하는데,

    개발 컴퓨터에서는 잘돌아 가나 배포하기 위해 다른 컴퓨터 테스트시(VS없는곳) 에러가 납니다.

    다른컴퓨터는 Window7이라, Framework 4.5까지 깔려있다고 알고있습니다.

     

    해결할 방법이 있는지요?

     

     

    2015년 9월 9일 수요일 오전 10:24

답변

  • 우선 다음과 같은 2가지 사실을 인지하시고.

    1. "C# 관련 Framework"라는 것은 없습니다.
    2. Windows 7에는 기본적으로 Framework 3.5가 설치되어 있습니다. (4.5는 부가적으로 설치하거나 아마 윈도우 업데이트를 통해 배포될 수도 있습니다.)

    혹시, 해당 C# 컨트롤을 포함한 DLL을 다른 컴퓨터에서 사용할 때 gacutil.exe + regasm.exe로 등록했나요? mfc 프로그램과 같은 디렉토리에 있다고 찾을 수 있는 것이 아니므로 사용 전 반드시 등록을 해야 합니다. (대개 설치 파일에서 등록을 미리 하게 됩니다.)

    • 답변으로 표시됨 SMPark82 2015년 9월 17일 목요일 오전 12:31
    2015년 9월 10일 목요일 오전 12:44
  • 위의 링크는 매우 위험한 방법입니다.

    교체한다는 mscorlib.dll의 버전이 1.0.3705.288이라고 되어 있는데 이것은 .NET Framework 1.0 SP2였을 때의 파일입니다. 이것을 .NET 4.0 폴더에 복사한다는 것은 닷넷 1.0 응용 프로그램을 실행하기 위해 닷넷 4.0에 속한 응용 프로그램의 실행에 영향을 줄 수 있습니다.

    • 답변으로 표시됨 SMPark82 2015년 9월 17일 목요일 오전 12:31
    2015년 9월 10일 목요일 오전 6:55

모든 응답

  • 우선 다음과 같은 2가지 사실을 인지하시고.

    1. "C# 관련 Framework"라는 것은 없습니다.
    2. Windows 7에는 기본적으로 Framework 3.5가 설치되어 있습니다. (4.5는 부가적으로 설치하거나 아마 윈도우 업데이트를 통해 배포될 수도 있습니다.)

    혹시, 해당 C# 컨트롤을 포함한 DLL을 다른 컴퓨터에서 사용할 때 gacutil.exe + regasm.exe로 등록했나요? mfc 프로그램과 같은 디렉토리에 있다고 찾을 수 있는 것이 아니므로 사용 전 반드시 등록을 해야 합니다. (대개 설치 파일에서 등록을 미리 하게 됩니다.)

    • 답변으로 표시됨 SMPark82 2015년 9월 17일 목요일 오전 12:31
    2015년 9월 10일 목요일 오전 12:44
  • 아래 웹 문서를 보면 mscorlib.dll을 덮어써서 해결했다고 합니다. 고객님의 경우 System.Windows.Forms.dll을 개발 PC에서 실행 PC로 덮어쓰는 과정을 하면 해결되는지 확인해 보시기 바랍니다.

    http://sunnyholic.com/archive/20130513
    [Solved] CLR20r3 오류 해결! mscorlib 문제 (7)

    2015년 9월 10일 목요일 오전 6:05
  • 위의 링크는 매우 위험한 방법입니다.

    교체한다는 mscorlib.dll의 버전이 1.0.3705.288이라고 되어 있는데 이것은 .NET Framework 1.0 SP2였을 때의 파일입니다. 이것을 .NET 4.0 폴더에 복사한다는 것은 닷넷 1.0 응용 프로그램을 실행하기 위해 닷넷 4.0에 속한 응용 프로그램의 실행에 영향을 줄 수 있습니다.

    • 답변으로 표시됨 SMPark82 2015년 9월 17일 목요일 오전 12:31
    2015년 9월 10일 목요일 오전 6:55