본문 바로가기

SDK-Style .NET Framework 프로젝트 생성하기

@HisaCat2026. 3. 17. 19:49

기본적으로 Visual Studio에서는 SDK-Style로 프로젝트를 만드려고 할 시

.NET Framework를 선택할 수 없도록 해 두었다.

 

이쪽을 이용하면 되지만, 이건 SDK-Style이 아닌 레거시 project 스타일이다.

 

VS를 통하지 않고, .NET CLI를 통해서 .NET Framework로 프로젝트를 생성하려고 해 보아도 다음과 같은 에러가 발생할 것이다:

C:\Project>dotnet new classlib -f net472
오류: 잘못된 옵션 :
-f net472
   'net472'은(는) -f에 유효한 값이 아닙니다. 가능한 값은 다음과 같습니다.
      net8.0           - 대상 net8.0
      net9.0           - Target net9.0
      netstandard2.0   - 대상 netstandard2.0
      netstandard2.1   - 대상 netstandard 2.1

자세한 내용은 다음을 실행하세요.
   dotnet new classlib -h

종료 코드에 관한 자세한 내용은 https://aka.ms/templating-exit-codes#를 참조하세요.127

 

그럼 Sdk-Style .NET Framework 프로젝트를 만드는 법은 없는걸까? (그럴리가 없지)

해결 방법은 간단하다.

 

일단 VS를 이용하거나, 혹은 다음과 같이 cli를 통해 그냥 .NET(혹은 .NET Standard) 버전의 프로젝트를 생성한다.

C:\Project>dotnet new classlib
"클래스 라이브러리" 템플릿이 성공적으로 생성되었습니다.

생성 후 작업 처리 중...
C:\Project\Project.csproj 복원 중:
복원에 성공했습니다.

 

 

이후, 생성된 Project.csproj를 텍스트 편집기로 연다.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

 

이후, TargetFramework를 원하는 버전으로 바꿔준다.

가령 .NET Framework 4.7.2의 경우, 이렇게 수정해주면 된다.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <!--<ImplicitUsings>enable</ImplicitUsings>-->
    <!--<Nullable>enable</Nullable>-->
  </PropertyGroup>

</Project>
.NET Framework의 경우 기본적으로 C# 3.7을 사용하기 때문에,
여기서는 C# 8.0 이상부터 지원하는 Nullable과, C# 10.0 이상부터 지원하는 ImplicitUsings를 주석처리 해 두었다.
만약 특정 C# 버전을 직접 지정하고 싶다면, LangVersion 태그를 추가하여 버전을 직접 명시하면 된다.
예시:
- 최신 버전(일반적으로 권장되지 아니함): <LangVersion>latest</LangVersion>
- C# 8.0: <LangVersion>8.0</LangVersion>


저장하면 끝이다.

 

Q: ㅇㄱㅈㅉㅇㅇ?

A: 네 진짜에요.

 


당연?하게나마 SDK Style 프로젝트 자체는 .NET Framework도 지원한다.

이걸 왜 UX단에서 막아놓은건진 모르겠는데,

아마 그냥 지원정책과 관련이 있던가 최신 .NET 개발로 유도하기 위한 장치가 아닌가 싶다.

 

나 이거몰라서 모딩같은거 할 때 맨날 레거시 프로젝트로 만드느라 종종 고역이었는데...

이젠... 해방이야... (바보)

 

HisaCat
@HisaCat :: ひさキャットの巣・히사캣의 둥지

カニのカはカオスのカ

뻘짓 좋아하는 게임 개발자

목차