250130 - 우당탕탕 프로젝트 뼈대 갈아엎기

LIHA·2026년 1월 29일
post-thumbnail

최종 골자 - 프론트: Razor Pages / 백: 클래스 라이브러리

src/
└PinkOtter.IChing.Core -> 클래스 라이브러리 (dll)
└PinkOtter.IChing.Web -> ASP.NET Core 웹앱 (Razor Pages)

클래스 라이브러리는 뭔가요 - C#은 결국 dll로 빌드하기에

GPT 할매, Gemini 할매와 함께 셋이서 머리를 맞대고 구현해 나가려고 큰 결심(?)을 하기가 무색하게 첫 번째부터 이해가 되지 않았다.
일단 비주얼 스튜디오 자체가 낯선 나에게는 솔루션의 하위 개념으로 프로젝트를 생성한다는 것도 상당히 낯설었다.
그렇게 이리저리 헤매던 차에 백단 프로젝트 생성을 클래스 라이브러리로 만들라는 것. 이 의문에 대한 GPT 할매의 답변은 다음과 같다.

웹사이트(웹앱)도 결국은 DLL로 빌드된다.
니가 실행하는 “웹 프로젝트”도 내부적으로는 DLL이 만들어지고, 그 DLL을 dotnet 런타임이 실행시키는 거다.

그리고 클래스 라이브러리(DLL) 는 “웹이냐 아니냐”가 아니라,
그냥 재사용 가능한 코드 묶음(모듈) 이라고 생각하면 된다.

기존 프로젝트 내부에 디렉토리가 있는데 안 보인다면

솔루션 탐색기 상단의 '모든 파일 표시' 를 누르면 빈 폴더 모양으로 뜰 것.
원하는 빈 폴더에 우클릭 하고 '프로젝트에 포함' 을 누르면 된다.

왜 dll 파일을 찾을 수 없는걸까

'C:\Users\LIHA\Desktop\pinkotter-iching\src\PinkOtter.IChing.Core\bin\Debug\PinkOtter.IChing.Core.dll' 메타데이터 파일을 찾을 수 없습니다.

라는 에러가 계속 뜨면서 빌드에 실패했다. 원인은 솔루션이 프로젝트를 불러오면서 무언가 참조가 꼬인 것으로 보인다.
시도해본 방법은 다음과 같다.

  1. 솔루션에서 제거 후 다시 추가
  2. 솔루션 다시 빌드 시도 (실패)
  3. VS 끄고 해당 경로 가서 bin 폴더랑 obj 폴더 삭제
  4. VS 다시 켜서 솔루션 불러온 후 다시 실행

이 와중에 현재 솔루션에 알수없는 프로젝트 구성 매핑이 있다는 오류 메시지도 떠서 Debug 콤보박스의 구성 관리자를 들어가 보니, 프로젝트 목록에 Web만 있고 Core가 없었다.
아마 클래스 라이브러리인 Core의 xml 구성이 잘못된 것도 영향이 있을 것 같아 xml을 수정했다. 영향이 있는진 모르겠지만... 왠지 해결되었다.
Gemini 할매가 준 코드는 다음과 같다.

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

	<PropertyGroup>
		<TargetFramework>net8.0</TargetFramework>
		<ImplicitUsings>enable</ImplicitUsings>
		<Nullable>enable</Nullable>
		<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
	</PropertyGroup>

</Project>

read-only라니 그게 무슨 소리요 VS 양반

이렇게 나오는거 보고 대체 뭐야? 싶었는데 원인은 저 줄의 위치 때문.
builder.Services. ~ 항목들은 var app = builder.Build(); 위에 위치해야 한다고.
그래서 위에 추가한 서비스들 준비 다 돼서 빌드하겠다는 얘기가 var app = builder.Build(); 라서, 그 뒤로는 read-only가 된다고 한다.

profile
갑자기 왜 춤춰?

0개의 댓글