Microsoft MVP성태의 닷넷 이야기
윈폼 기반의 응용프로그램 dll 참조와 32,64bit 빌드 관련 문의 [링크 복사], [링크+제목 복사],
조회: 9946
글쓴 사람
Syong (ianstory01 at naver.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

안녕하세요. 윈폼 기반의 응용프로그램에서 dll 참조와 32,64bit 빌드 관련하여 궁금한 점이 있어 문의드립니다.

현재 Visual Studio 2013 버전을 사용중이며, 각종 장치의 dll은 64bit로 작성된 dll을 참조하고 있고,
윈폼에서 사용중인 Custom User Control은 any cpu로 빌드하여 dll 참조하여 사용하고 있습니다.

이 때, 윈폼에의 빌드 플랫폼은 활성(x64)로 설정하고,
플랫폼 대상을 Any CPU로 구성해야만 디자이너 보기에서 해당 컨트롤들이 정상적으로 보이고,
플랫폼 대상을 x64로 구성하면 디자이너 보기에서 해당 컨트롤을 정상적으로 볼 수 없습니다.

이 때 'Any CPU'로 구성한 프로그램은 64비트로 동작하는게 맞는건가요?

궁금증이 생겨 Custom User Control 자체를 x64로 구성해서 빌드한 뒤, 윈폼 플랫폼은 x64로 구성해도 디자이너에서 정상적으로 보이지 않는 증상은 동일합니다.

간단한 문제 같은데, 제가 빌드 플랫폼, 플랫폼 대상 관계와 dll 참조에 관해 명확히 알지 못하는 것 같아 문의드립니다.


[연관 글]






[최초 등록일: ]
[최종 수정일: 4/16/2021]


비밀번호

댓글 작성자
 



2021-04-16 11시09분
AnyCPU는 64비트를 의미하는 것이 아닙니다. AnyCPU의 EXE와 DLL에서의 입장이 다른데요, 우선, AnyCPU EXE인 경우는 실행 중인 운영체제의 플랫폼(x86/x64)에 맞게 실행됩니다. 그리고 AnyCPU DLL인 경우에는, 그 DLL이 로딩된 EXE의 플랫폼(x86/x64)에 맞게 실행됩니다.

"디자이너 보기"에서 안 된다는 것은 비주얼 스튜디오(devenv.exe)가 32비트 프로세스여서 그럴 것입니다. 그래서 AnyCPU로 빌드한 경우에는 32비트 모드로도 로딩이 되는 반면 x64로 지정하면 32비트로 실행 중인 devenv.exe와 맞지 않아 그런 것입니다. 이와 관련해서는 Visual Studio 2019에서도 발생하며, 그나마 WPF의 경우에는 현재 "New WPF XAML Designer for .NET Framework"라는 preview 단계에서 해결중입니다.

XAML Designer
; https://devblogs.microsoft.com/visualstudio/improvements-to-xaml-tooling-in-visual-studio-2019-version-16-7-preview-1/#xaml-designer

사실 이 문제가 크게 부각되지 않는 이유가, DLL은 굳이 x64/x86을 지정할 필요가 없는 경우가 대부분입니다. 위에서도 언급했지만 DLL은 그것이 로딩되는 EXE의 환경을 타므로 설령 x64에서만 동작하는 DLL일지라도 AnyCPU로 빌드해도 무방하기 때문입니다.

재미있는 것은, 마이크로소프트가 EXE 프로젝트에 대해서는 x64로 설정해도 그 안에 있는 폼이나 컨트롤을 정상적으로 designer에서 보여준다는 점입니다. 아마도 InitializeComponent 까지만 실행하면 되기 때문에 임의로 특별한 내부 빌드를 거쳐 로드하는 것이 아닌가 생각됩니다.

참고로, 이 문제는 x64 비트의 비주얼 스튜디오가 나와도 계속될 수 있는 문제입니다. 아마도 그 때는 x86으로 고정한 DLL이 디자이너에서 올라오지 않을 것이고, 사용자는 프로젝트의 성격에 따라 x86 또는 x64 용 비주얼 스튜디오를 선택해서 띄워야 할 것입니다.
정성태
2021-04-16 11시35분
[Syong] 빠른 답변 감사합니다!
제가 말씀하신 것을 이해한바로는 여러 환경에서 동일한 dll을 재활용하여 사용할 때는 EXE 프로그램만 x86/x64 환경에 맞춰서 빌드하고,
재사용하는 dll은 Any CPU로 미리 빌드해두고 재활용하면 문제가 없게 되는 것 같은데 맞을까요??

추가로,
'마이크로소프트가 EXE 프로젝트에 대해서는 x64로 설정해도 그 안에 있는 폼이나 컨트롤을 정상적으로 designer에서 보여준다는 점입니다.'
이 부분에 대해서 단일 프로젝트 내에서 기본 Button Control을 상속한 Custom Control을 UI에 추가하여 확인해본 결과 x64에서는 보여지지 않는데,
말씀하신 사항은 기본 컨트롤을 사용할 때를 말씀하신건가요?
[guest]
2021-04-16 07시53분
답변을 아래의 글에 정리했으니 참고하세요.

x64 DLL 프로젝트의 컨트롤이 Visual Studio의 Designer에서 보이지 않는 문제
; https://www.sysnet.pe.kr/2/0/12602

비주얼 스튜디오 - 상속받은 컨트롤이 디자인 창에서 지원되지 않는 문제
; https://www.sysnet.pe.kr/2/0/12603
정성태
2021-06-19 12시17분
Visual Studio 2022 - Windows Forms 프로젝트의 x86 DLL 컨트롤이 Designer에서 오류가 발생하는 문제
; https://www.sysnet.pe.kr/2/0/12683
정성태

... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4966포플러3/30/20189618    답변글 [답변]: C# 응용프로그램 (Winform)에서 unhandledexception 발생시 프로그램이 죽는 현상 이외에 재부팅될 수도 있을까요? [1]
4961김민욱3/26/201810523레이더 뷰어의 구현 방법(이미지 확대 축소 관련) [2]
4960hurd...3/18/201810214OCX 관련한 질문을 드리고자 합니다. [1]
4959익명3/10/20189232교재 199page 델리게이트와 object를 이용한 범용 정렬 코드 [1]
4957멍멍이2/13/20189865System.Console - WriteLine함수의 제너릭 사용 [1]
4956김성대2/12/20189188asp.net 질문입니다. [1]
4955웅이2/12/20189658[삭제] WPF에서 list 속도 향상하는 방법이 있을까요?
4954초보자2/8/201811426FFT Library 사용 [1]
4950ASP열공2/5/20189192asp.net 과 C# 을 이용해서 홈페이지 만드는 질문입니다. [1]
4951ASP열공2/6/201810158    답변글 [답변]: asp.net 과 C# 을 이용해서 홈페이지 만드는 질문입니다. [1]
4952ASP열공2/7/20189318        답변글 [답변]: [답변]: asp.net 과 C# 을 이용해서 홈페이지 만드는 질문입니다. [1]
4953ASP열공2/7/20188848            답변글 [답변]: [답변]: [답변]: asp.net 과 C# 을 이용해서 홈페이지 만드는 질문입니다.
4949김성대1/31/201810531비동기 질문입니다. [3]파일 다운로드1
494880511/31/20189300C# 7.1책 보다가 질문드립니다 [1]
4947김성대1/30/201810584[삭제] 비동기 질문입니다. [2]파일 다운로드2
4946윤현수1/29/201810095비동기 TCP통신 데이터 문제 [4]파일 다운로드1
4945김성대1/26/20188663비동기 질문입니다. [1]파일 다운로드1
4944popo1/25/20188061[삭제] 스레드 안에서 Window Visibility 변경시 DialogResult 오류 질문
4943김성대1/22/20189022FromAsync 질문입니다. [1]
4942박현일1/19/201810656WPF 공부중 모르는 문법이 있어서요~^^; [2]
4941김성대1/18/20188935비동기예약어 실행오류관련입니다. [1]
4940plzh...1/10/20189806webbrowser2 를 이용한 sns 로그인 구현 관련 문의 [2]
4939이성일1/4/201811302ClickOnce 배포 후 업데이트 시 발생하는 오류에 대해 질문 드립니다. [2]
4938김성대1/3/20189345채팅 프로그램관련 질문입니다. [9]파일 다운로드1
4937Ques...1/3/201811728C# CPU 사용량 한계치 늘리는 방법 [2]
4936무개1/3/20188848책 내용 인용하는 것에 관한 질문이있습니다. [1]파일 다운로드1
... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...