기록
article thumbnail
728x90

Web Forms 프로젝트

웹 사이트 프로젝트

웹 사이트 프로젝트는 Visual Studio 프로젝트 파일(.csproj / .vbproj)이 없습니다. 폴더 구조에 있는 모든 파일이 사이트에 자동으로 포함됩니다. IIS 배포하면 ASP.NET에서 자동으로 코드를 컴파일합니다. 프로젝트 파일이 없기 때문에, 프로젝트 간의 참조 정보를 찾기 어렵습니다. 다른 페이지와 결합력이 약하기 때문에 유지보수 하기 좋습니다. 서버에 파일을 올렸다면 그 파일이 서버 비하인드 코드 파일이라고 해도 업데이트가 됩니다.

웹 응용 프로그램

프로젝트 파일이 생성됩니다. 소스 코드를 컴퓨터에서 컴파일하고, 서버 코드 파일을 컴파일하면 단일 어셈블리가 생성됩니다. 프로젝트 참조와 같은 정보가 프로젝트 파일에 저장이 되어있습니다. 사전에 컴파일하기 때문에 운영에서 서버에서 컴파일되는 동안 유저가 기다리지 않아도 됩니다. 단, 동적 컴파일에 따라 속도가 느려질 수 있습니다.

Visual Studio의 .gitignore

.gitignore은 git 소스 관리에서 무시할 파일을 설정합니다. Visual Studio IDE 전용으로  .gitignore 스크립트를 자동으로 생성해 줍니다. bin, dll NuGet 패키지 등 파일을 무시합니다. 

NuGet 패키지란?

.NET Framework, .NET에서 다른 개발자가 유용한 코드를 공유하기 위해  컴파일된 코드(DLL), 소스 코드와 관련된 다른 파일 및 패키지의 버전 번호와 같은 정보를 포함한 설명적 매니페스트가 포함된 .nupkg 확장명의 단일 ZIP 파일입니다.

 

.NET Framework 에서 NuGet 패키지 관리

NuGet 패키지를 설치하는 건, CLI와 GUI 등 다양한 방법으로 사용할 수 있습니다. 패키지 버전과 참조 관리는 PackageReference와 packages.config 파일로 하는 방법이 있는 데 사용하는 프레임워크마다 다르게 사용합니다.

단, packages.config 는 레거시용으로 유지되며 더 이상 개발되지 않고 있습니다. 그래서 .NET Framework에서 사용하고 있는 nuget.exe CLI 명령어는 패키지를 참조 목록에 자동으로 추가하고 있지 않습니다. 패키지 관리자 콘솔에서 update 명령어나 GUI 관리자 메뉴로 가서 직접 삭제하고 재설치 업데이트를 해주어야 합니다.

 

웹폼의 웹사이트 프로젝트나 Web API 프로젝트에서 처음 설정하지 않고 VS git 을 통해 받으면 기본 VS 템플릿 설정에 의하면 bin/dll/packages 등 파일은 git 형상관리하지 않게 되는데 다른 개발 환경을 구축할 때 패키지 관련 오류가 많이 일어납니다.  .NET Framework 프로젝트 경로에 packages.config 파일 목록대로 설치되는 것 같지만, 실제로 프로젝트 참조에 문제가 생길 경우가 많습니다. 심지어 패키지 관리 도구 GUI 메뉴에서 이미 설치되어 있다고 해서 더 헷갈리는데 패키지를 삭제하고 재설치하면 참조에 업데이트되는 경우가 많습니다.

 

또는 패키지 관리자 콘솔을 열면 NuGet 패키지 복원에 관련한 안내창이 뜨고 복원을 하면 제대로 빌드가 될 경우도 있습니다.

 

이것도 안될 때는 패키지 관리자 콘솔에서 파워 쉘 복원 명령어를 실행시키면 됩니다. 솔루션에 있는 모든 프로젝트가 적용됩니다.

Update-Package -reinstall

특정 프로젝트만 복원하고 싶을 때는, MYPROJECTNAME 부분에 복원하려는 프로젝트 이름을 넣어 실행합니다.

Update-Package -reinstall -ProjectName MYPROJECTNAME

복원에 성공했지만 packages.config 파일이 제대로 관리되지 않아 프로젝트가 빌드 안 되는 경우가 있습니다. 이 경우에는 수동으로 패키지 파일을 관리했다는 것인데, 서버에 올라간 .dll 파일을 그냥 들고 옵니다... 마지막으로 남은 .dll 잘 보관합시다.

 

최신 버전으로 업데이트해도 다른 패키지 간에 종속성, 종료된 패키지 등 아주 골치 아파집니다. 어서 새로운 환경으로 옮기는 게 마음이 편안해집니다. 

Visual Studio 2022에서의 웹 사이트 프로젝트

빌드되지 않습니다. 빌드 시스템이 아주 다릅니다!

 

참고자료
https://learn.microsoft.com/ko-kr/nuget/what-is-nuget
https://learn.microsoft.com/ko-kr/nuget/quickstart/install-and-use-a-package-in-visual-studio
https://www.nuget.org/
728x90