일하다가 막혔던것들/C#(VB6)

Visual Studio2022 & Devexpress 22 개발환경 업그레이드

about_blank_i 2022. 11. 16. 17:35

회사에서 개발환경 라이센스 이슈로 업그레이드가 결정이되었다.

 

1. 스펙

변경 전 변경 후
Visual Studio 2010
Devexpress 13.2
.NET Framework 4.0
Visual Studio 2022
Devexpress 22.1
.NET Framework 4.6 (최소 4.5.2+)

 

2. 결과

.NET Framework 4.6 버전으로 버전 업 후, 별도의 추가 작업 없이 업그레이드 버전 배포가 가능하다.

 

3. 설치

4.NET Framework 프로젝트 버전 변경 방법

1) 프로젝트 선택 후 오른쪽클릭 > 속성 > 대상 프레임워크 .net framework 4.6으로 변경 후

 전체 디버깅 è 디버깅하면 오류 발생

2) 프로젝트 닫고, ProjectConverter.exe를 사용하여 패키지 devexpress 업그레이드 진행

 

5. Devexpress 버전 변경

1) ProjectConverter.exe 사용

C:\Program Files\DevExpress 22.1\Components\Tools\Components\ 하단에 위치

2) 컨버트 전 반드시 프로젝트 .net framework 최소사항 확인(22.1.5 기준 net 4.5.2 +).

3) 본 프로젝트 외, 참조 된 공통 프로젝트의 .net framework도 같이 변경되어있는 지 확인

4) Devexpress 업그레이드 후, 패키지를 열어 전체 디버깅을 합니다. => 오류 나는 부분 수정 필요

5) 각 프로젝트 별 참조 DLL을 확인 (+ 서브파티 DLL 경로도 업그레이드 log4net.dll / Newtonsoft.Json.dll

 

6. 배포 테스트

1) .NET 4.6 미만 환경(기존)

로그인 시에 컴퓨터에 설치된 .NET Framework 버전을 확인하여 신규파일을 업그레이드 받는다.

4.6 미만 => 기존 버전 유지

4.6 이상 => 2022 업그레이드된 실행파일 다운로드

 

2) .NET 4.6 이상 환경에서 실행이 안 되는 경우

  • 포스 포맷(win10기준 .net 4.7까지 설치된 상태)
  • 테스트 솔루션 설치파일로 설치 후 로그인
  • 업그레이드 파일 다운로드 하였으나 => 오류발생 "C:\Comware\CenterNet.exe"에 대한 활성화 컨텍스트를 생성하지 못했습니다. manifest 또는 정책 파일 "C:\Comware\CenterNet.exe.Config" 34줄에서 오류가 발생했습니다. 잘못된 Xml 구문입니다.

3) 해결방법

  • .net framework 4.6 이상 버전인지 확인 한다.
  • C:\Comware  > devexpress dll을 넣어준다.
  • C:\Comware  > third party dll을 넣어준다.( log4net.dll/ Newtonsoft.Json.dll)
  • 정상실행확인
  • 안될 경우 CenterNet.exe.config 파일의 NET버전을 확인해볼 것!

7. Window10 .net framework 버전 확인방법

cmd> power shell > Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version

 

8. NET Framework 버전확인(소스코드로 확인)

https://learn.microsoft.com/ko-kr/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#detect-net-framework-45-and-later-versions

 

설치된 .NET Framework 버전 확인 - .NET Framework

코드, regedit.exe 또는 PowerShell을 사용하여 Windows 레지스트리를 쿼리하는 방법으로 컴퓨터에 설치된 .NET Framework 버전을 검색합니다.

learn.microsoft.com

using Microsoft.Win32;

private bool checkNetVersion() {

            bool result = false;

            const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

            using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
            {
                if (ndpKey != null && ndpKey.GetValue("Release") != null)
                {
                    if ((int)ndpKey.GetValue("Release") >= 393295) { //4.6 dㅣ상이면 다운로드
                        return true;
                    }
                }
            }

            return result;
        
        }
 string CheckFor45PlusVersion(int releaseKey)
        //{
        //    if (releaseKey >= 528040)
        //        return "4.8 or later";
        //    if (releaseKey >= 461808)
        //        return "4.7.2";
        //    if (releaseKey >= 461308)
        //        return "4.7.1";
        //    if (releaseKey >= 460798)
        //        return "4.7";
        //    if (releaseKey >= 394802)
        //        return "4.6.2";
        //    if (releaseKey >= 394254)
        //        return "4.6.1";
        //    if (releaseKey >= 393295)
        //        return "4.6";
        //    if (releaseKey >= 379893)
        //        return "4.5.2";
        //    if (releaseKey >= 378675)
        //        return "4.5.1";
        //    if (releaseKey >= 378389)
        //        return "4.5";
        //    // This code should never execute. A non-null release key should mean
        //    // that 4.5 or later is installed.
        //    return "No 4.5 or later version detected";
      }