Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

x64 DLL 프로젝트의 컨트롤이 Visual Studio의 Designer에서 보이지 않는 문제 - 두 번째 이야기

아시다시피, Visual Studio 2019 이하 버전에서는 x64 환경에 대한 디자이너 문제가 있습니다.

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

그리고 지난번 문제도 그렇고요,

wpf x64로 만든 메인 프로그램에서 dll로 된 UserControl 속성이 디자인 타임에 잘 안보이는 문제
; https://www.sysnet.pe.kr/3/0/5526

그런데, 가만 생각해 보니 이에 대한 다른 해결책이 있긴 합니다. 그러니까, 비주얼 스튜디오 디자인 시에는 아무런 문제가 없도록 그냥 AnyCPU (Prefer 32bit) 옵션을 켜 놓고 작업하다가, 빌드 대상물에 대해서만 그 옵션을 끄면 되는 것입니다.

왜냐하면 결국 문제가 되는 것은, 디자인 타임에서 x86으로 실행되는 devenv.exe와 x64로 빌드된 DLL의 플랫폼 충돌이 원인이기 때문입니다.

그래서 해결책이 아주 간단합니다. 이를 위해 해줘야 할 것은, 단지 "Build Events"의 "Post-Build Event"에 corflags.exe(참고: 사용예)를 이용해 "Prefer 32bit" 옵션을 빼도록 실행합니다.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\CorFlags.exe" /32BITPREF- $(TargetPath)

경로가 좀 어지러우니, corflags.exe를 현재 프로젝트에 복사해 추가한 다음 아래와 같이 설정해도 무방합니다.

"$(ProjectDir)CorFlags.exe" /32BITPREF- $(TargetPath)

혹은, csproj 자체를 편집해도 되고!

...[생략]...

<PropertyGroup>
    <PostBuildEvent>"$(ProjectDir)CorFlags.exe" /32BITPREF- $(TargetPath)</PostBuildEvent>
</PropertyGroup>

...[생략]...

끝입니다. 저렇게 설정해 주면 이제 디자이너는 AnyCPU로 설정된 DLL을 로드하므로 문제가 없고, 빌드 결과물은 x64로 실행될 것이므로 또한 문제가 없습니다. 실제로, 이렇게 한 후 디버깅으로 실행해도 Visual Studio는 정상적으로 BP까지 걸어가며 동작하는 데 아무런 문제가 없었습니다.




그리고 이 방법은 Visual Studio 2022 이후 x86 환경에 대한 디자이너 문제를 해결하는데 적용할 수도 있을 것입니다.

Visual Studio 2022 - Windows Forms 프로젝트의 x86 DLL 컨트롤이 Designer에서 오류가 발생하는 문제
; https://www.sysnet.pe.kr/2/0/12683




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/14/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  [79]  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11679정성태8/30/201812907.NET Framework: 792. C# COM 서버에 구독한 COM 이벤트를 C++에서 받는 방법파일 다운로드1
11678정성태8/29/201811462오류 유형: 483. 닷넷 - System.InvalidProgramException [1]
11677정성태8/29/201810142오류 유형: 482. TFS - Could not find a part of the path '...\packages\Microsoft.AspNet.WebApi.5.2.5\.signature.p7s'.
11676정성태8/29/201820078.NET Framework: 791. C# - ElasticSearch를 위한 Client 라이브러리 제작파일 다운로드1
11675정성태8/29/201811179오류 유형: 481. The located assembly's manifest definition does not match the assembly reference.
11674정성태8/29/201813183Phone: 12. Xamarin - 기존 리모컨 기능을 핸드폰의 적외선 송신으로 구현파일 다운로드1
11673정성태8/28/201810793오류 유형: 480. Fritzing 실행 시 Ordinal Not Found 오류
11672정성태8/28/201811226오류 유형: 479. 윈도우 - 시스템 설정에서 도메인 참가를 위한 "Change" 버튼이 비활성화된 경우
11671정성태8/28/201817019사물인터넷: 39. 아두이노에서 적외선 송신기 기본 사용법파일 다운로드1
11670정성태8/28/201815023사물인터넷: 38. 아두이노에서 적외선 수신기 기본 사용법 [1]파일 다운로드1
11669정성태8/24/201813761개발 환경 구성: 394. 윈도우 환경에서 elasticsearch의 한글 블로그 검색 인덱스 구성
11668정성태8/24/201824520오류 유형: 478. 윈도우 업데이트(KB4458842) 이후 SQL Server 서비스 시작 오류
11667정성태8/24/201812709오류 유형: 477. "Use Unicode UTF-8 for worldwide language support" 옵션 설정 시 SQL Server 2016 설치 오류 [1]
11666정성태8/22/201812519사물인터넷: 37. 아두이노 - 코딩으로 대신하는 오실레이터 회로의 소리 출력파일 다운로드1
11665정성태8/22/201814119사물인터넷: 36. 오실레이터 회로 동작을 아두이노의 코딩으로 구현하는 방법파일 다운로드1
11664정성태8/22/201813934개발 환경 구성: 393. 윈도우 환경에서 elasticsearch의 한글 형태소 분석기 설치 [1]
11663정성태8/22/201816333개발 환경 구성: 392. 윈도우 환경에서 curl.exe를 이용한 elasticsearch 6.x 기본 사용법
11662정성태8/21/201811487사물인터넷: 35. 병렬 회로에서의 커패시터파일 다운로드1
11661정성태8/21/201813138사물인터넷: 34. 트랜지스터 동작 - 컬렉터-이미터 간의 저항 측정파일 다운로드1
11660정성태8/19/201812083사물인터넷: 33. 세라믹 커패시터의 동작 방식파일 다운로드1
11659정성태8/19/201811636사물인터넷: 32. 9V 전압에서 테스트하는 PN2222A 트랜지스터파일 다운로드1
11658정성태8/18/201814780사물인터넷: 31. 커패시터와 RC 회로파일 다운로드3
11657정성태8/18/201812901사물인터넷: 30. 릴레이(Relay) 제어파일 다운로드3
11656정성태8/16/20189955사물인터넷: 29. 트랜지스터와 병렬로 연결한 LED파일 다운로드1
11655정성태8/16/201811589사물인터넷: 28. 저항과 병렬로 연결한 LED파일 다운로드1
11654정성태8/15/201812144사물인터넷: 27. 병렬 회로의 저항, 전압 및 전류파일 다운로드1
... 76  77  78  [79]  80  81  82  83  84  85  86  87  88  89  90  ...