Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)
(시리즈 글이 5개 있습니다.)
VS.NET IDE: 161. x64 DLL 프로젝트의 컨트롤이 Visual Studio의 Designer에서 보이지 않는 문제
; https://www.sysnet.pe.kr/2/0/12602

VS.NET IDE: 162.  비주얼 스튜디오 - 상속받은 컨트롤이 디자인 창에서 지원되지 않는 문제
; https://www.sysnet.pe.kr/2/0/12603

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

VS.NET IDE: 168. x64 DLL 프로젝트의 컨트롤이 Visual Studio의 Designer에서 보이지 않는 문제 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/12705

VS.NET IDE: 182. Visual Studio - 32비트로만 빌드된 ActiveX와 작업해야 한다면?
; https://www.sysnet.pe.kr/2/0/13322




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)
11878정성태4/22/201927038.NET Framework: 824. (번역글) .NET Internals Cookbook Part 9 - Finalizers, queues, card tables and other GC stuff파일 다운로드1
11877정성태4/22/201927615.NET Framework: 823. (번역글) .NET Internals Cookbook Part 8 - C# gotchas파일 다운로드1
11876정성태4/21/201924404.NET Framework: 822. (번역글) .NET Internals Cookbook Part 7 - Word tearing, locking and others파일 다운로드1
11875정성태4/21/201927297오류 유형: 530. Visual Studo에서 .NET Core 프로젝트를 열 때 "One or more errors occurred." 오류 발생
11874정성태4/20/201927466.NET Framework: 821. (번역글) .NET Internals Cookbook Part 6 - Object internals파일 다운로드1
11873정성태4/19/201926148.NET Framework: 820. (번역글) .NET Internals Cookbook Part 5 - Methods, parameters, modifiers파일 다운로드1
11872정성태4/17/201927274.NET Framework: 819. (번역글) .NET Internals Cookbook Part 4 - Type members파일 다운로드1
11871정성태4/16/201923687.NET Framework: 818. (번역글) .NET Internals Cookbook Part 3 - Initialization tricks [3]파일 다운로드1
11870정성태4/16/201923777.NET Framework: 817. Process.Start로 실행한 콘솔 프로그램의 출력 결과를 얻는 방법파일 다운로드1
11869정성태4/15/201931226.NET Framework: 816. (번역글) .NET Internals Cookbook Part 2 - GC-related things [2]파일 다운로드2
11868정성태4/15/201925210.NET Framework: 815. CER(Constrained Execution Region)이란?파일 다운로드1
11867정성태4/15/201924133.NET Framework: 814. Critical Finalizer와 SafeHandle의 사용 의미파일 다운로드1
11866정성태4/9/201926539Windows: 159. 네트워크 공유 폴더(net use)에 대한 인증 정보는 언제까지 유효할까요?
11865정성태4/9/201923341오류 유형: 529. 제어판 - C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools is not accessible.
11864정성태4/9/201921878오류 유형: 528. '...' could be '0': this does not adhere to the specification for the function '...'
11863정성태4/9/201921754디버깅 기술: 127. windbg - .NET x64 EXE의 EntryPoint
11862정성태4/7/201923453개발 환경 구성: 437. .NET EXE의 ASLR 기능을 끄는 방법
11861정성태4/6/201922634디버깅 기술: 126. windbg - .NET x86 CLR2/CLR4 EXE의 EntryPoint
11860정성태4/5/201928236오류 유형: 527. Visual C++ 컴파일 오류 - error C2220: warning treated as error - no 'object' file generated
11859정성태4/4/201924920디버깅 기술: 125. WinDbg로 EXE의 EntryPoint에서 BP 거는 방법
11858정성태3/27/201926279VC++: 129. EXE를 LoadLibrary로 로딩해 PE 헤더에 있는 EntryPoint를 직접 호출하는 방법파일 다운로드1
11857정성태3/26/201923269VC++: 128. strncpy 사용 시 주의 사항(Linux / Windows)
11856정성태3/25/201923791VS.NET IDE: 134. 마이크로소프트의 CoreCLR 프로파일러 리눅스 예제를 Visual Studio F5 원격 디버깅하는 방법 [1]파일 다운로드1
11855정성태3/25/201926114개발 환경 구성: 436. 페이스북 HTTPS 인증을 localhost에서 테스트하는 방법
11854정성태3/25/201921451VS.NET IDE: 133. IIS Express로 호스팅하는 사이트를 https로 접근하는 방법
11853정성태3/24/201924994개발 환경 구성: 435. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면? - 두 번째 이야기 [1]
... 76  77  78  79  80  81  82  83  84  85  [86]  87  88  89  90  ...