참고로 Visual Studio 2022부터는 .NET Framework 4.0~4.5.1 타깃팅 구성 요소가 기본 제공되지 않으므로, 해당 프로젝트를 계속 빌드해야 한다면 VS 2017 또는 VS 2019를 사용하는 편이 적합합니다.
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">x86</Platform> <ProductVersion>8.0.30703</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{518CD748-F620-487F-B75B-0E6DDA0CDFC0}</ProjectGuid> <OutputType>WinExe</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>APM</RootNamespace> <AssemblyName>APM</AssemblyName> <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> -------------------------------- -------------------------------- -------------------------------- -------------------------------- -------------------------------- -------------------------------- -------------------------------- |
제시하신 .csproj 프로젝트 파일은 Visual Studio 2017과 Visual Studio 2019 모두에서 열 수 있는 구형 C# 프로젝트 형식입니다. 핵심은 프로젝트 파일의 TargetFrameworkVersion이 v4.0으로 지정되어 있다는 점입니다.
1. Visual Studio 2017과 2019에서 열었을 때의 결과
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
이 설정은 프로젝트가 .NET Framework 4.0을 대상으로 빌드되도록 지정합니다. Visual Studio 버전이 달라져도 이 값 자체가 자동으로 .NET Framework 4.7이나 4.8로 바뀌는 것은 아닙니다.
| 프로젝트 열기 | 가능 | 가능 |
| 프로젝트 형식 | 구형 MSBuild 형식 | 구형 MSBuild 형식 |
| 대상 프레임워크 | .NET Framework 4.0 | .NET Framework 4.0 |
| C# 소스 코드 | 동일한 코드 사용 가능 | 동일한 코드 사용 가능 |
| 빌드 결과물 | APM.exe 또는 APM.dll | APM.exe 또는 APM.dll |
| 프레임워크 참조 | .NET 4.0 참조 어셈블리 필요 | .NET 4.0 참조 어셈블리 필요 |
| 디자이너 및 NuGet | 구버전 호환성에 영향받음 | 구버전 호환성에 영향받음 |
단, 실제 빌드 성공 여부는 설치된 .NET Framework 타깃팅 팩, C# 컴파일러, NuGet 패키지 및 프로젝트의 나머지 설정에 따라 달라집니다.
2. 실제 차이가 발생하는 부분
① 프로젝트를 여는 것과 빌드하는 것은 다릅니다
Visual Studio에서 프로젝트 파일을 열 수 있어도 빌드가 성공한다는 의미는 아닙니다.
예를 들어 .NET Framework 4.0 참조 어셈블리가 설치되어 있지 않으면 다음과 같은 오류가 발생할 수 있습니다.
MSB3644: The reference assemblies for
.NETFramework,Version=v4.0 were not found.
이 경우에는 해당 버전의 참조 어셈블리 또는 타깃팅 팩을 설치해야 합니다.

② Visual Studio 버전에 따른 차이
Visual Studio 2017
기존 .NET Framework 4.0 프로젝트를 유지하면서 소스 코드를 수정하고 빌드할 수 있습니다. 필요한 프레임워크 구성 요소가 설치되어 있어야 합니다.
Visual Studio 2019
마찬가지로 기존 프로젝트를 유지하고 빌드할 수 있습니다. 다만 VS 2017보다 최신 MSBuild 및 C# 컴파일러를 사용하므로 일부 구형 코드나 종속성에서 차이가 발생할 수 있습니다.
3. 프로젝트 파일의 각 설정 의미
| ToolsVersion="4.0" | 구형 MSBuild 프로젝트 파일의 도구 버전 메타데이터 |
| DefaultTargets="Build" | 기본 빌드 대상은 Build |
| ProjectGuid | 프로젝트를 식별하는 GUID |
| OutputType = WinExe | 콘솔 창을 기본으로 띄우지 않는 Windows 실행 파일 |
| RootNamespace = APM | 기본 네임스페이스 |
| AssemblyName = APM | 생성되는 어셈블리 이름 |
| TargetFrameworkVersion = v4.0 | .NET Framework 4.0 대상 |
특히 ToolsVersion="4.0"과 TargetFrameworkVersion은 서로 다른 설정입니다. Visual Studio 2019에서 열었다고 해서 ToolsVersion을 반드시 16.0으로 변경할 필요는 없습니다.
4. 현재 APM 프로젝트에 권장하는 방법
기존 APM 소스를 그대로 유지하는 것이 목적이라면 다음 순서가 안전합니다.
-
원본 .csproj 파일을 백업합니다.
-
Visual Studio 2017과 2019에서 각각 프로젝트를 엽니다.
-
프로젝트 속성의 응용 프로그램 → 대상 프레임워크에서 .NET Framework 4가 선택되어 있는지 확인합니다.
-
Release 및 기존 플랫폼 설정으로 빌드합니다.
-
생성된 EXE/DLL과 참조 DLL을 비교합니다.
주의: 두 버전에서 같은 소스 코드를 빌드하더라도 컴파일러 버전, 빌드 옵션, 참조 라이브러리에 따라 결과 바이너리가 달라질 수 있습니다.
참고로 Visual Studio 2022부터는 .NET Framework 4.0~4.5.1 타깃팅 구성 요소가 기본 제공되지 않으므로, 해당 프로젝트를 계속 빌드해야 한다면 VS 2017 또는 VS 2019를 사용하는 편이 적합합니다.
'Visual Studio(IDE)' 카테고리의 다른 글
| 비주얼 스튜디오와 연동된 라이선스 생성-ComponentOne (C1) 제품 활성화/라이선스 (0) | 2025.12.30 |
|---|---|
| Visual Studio Professional 2022(windows 11용) 설치하는 과정 (0) | 2025.08.29 |
| windows 11 에서 componentone 설치 (1) | 2025.08.28 |
| VS2022 → 최소 지원이 .NET Framework 4.5 이상, 4.0/4.5는 빠짐. (1) | 2025.08.28 |
| 각 버전별 최소 용량 오프라인 설치용 명령어 (0) | 2025.08.27 |
