어느날 C 드라이브가 용량이 좀 차서

파일을 정리하는데 엄청난양의 Nuget Package 파일들이 디스크 용량을

잡아 먹고 있는걸 확인했다.

이를 수동으로 지우기 보다는 Visual Studio 에서 지우는 방법이 있다.

Visual Studio 에서 도구>옵션 의 옵션창에서

Nuget 패키지 관리자를 선택하면 '모든 NuGet 캐시 지우기' 버튼이 있는데

이를 클릭하면 삭제 할수 있다.

 

하나의 솔루션에 있던 프로젝트를 하나 빼와서

열고 빌드하니 아래처럼 오류가 발생되었습니다.

심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류  이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 ..\packages\Xamarin.Build.Download.0.4.2\build\Xamarin.Build.Download.props입니다. AdMob D:\[01]Source\K.Git\AdMob\AdMob.csproj 140 

NuGet 관련된 파일이 솔루션에 종속되어 package 폴더에있는데 이를 무시하고 가져왔기때문입니다.

일단 복원하기 전 프로젝트를 백업받아놓고 시작해야합니다. (혹시모를 사태에 대한 책임은 저한테 없습니다. 백업하세요.^^;)

0. 솔루션을 닫습니다.

1. bin, obj 폴더를 삭제합니다.

2. Solution파일(.sln)이 있는 폴더 있는 packages 폴더도 삭제합니다.

3. 이제 솔루션을 열고 도구 - Nuget 패키지관리자- 패키지 관리자 콘솔 을 클릭합니다. 

4. update-package -reinstall 명령어를 입력하고 실행합니다.(엔터)

그럼 아래 처럼 재 설치가 진행됩니다. 요게 에러가 날수도 있습니다 에러가날수도 있다고 하는데 그땐 열심히.. 구글링을...

 

위처럼 하면 package.config 파일에 명시됨 대로 의존성이 있는 패키지를 제거후 다시 다운로드 하고 설치한다고 합니다.

일단 저는 위 방법으로 해결이 안되었네요 ㅜㅠ

이상은 NuGet 복원하는 방법이었습니다.

 

추가 => 빌드시 자동으로 다운로드 : 도구- 옵션-NuGet 패키지 관리자-일반=> (NuGet이 누락된 패키지를 빌드 시 다운로드하도록 허용) 체크

'C#' 카테고리의 다른 글

(C#) Wake on LAN  (0) 2017.07.11
(Visual Studio) Error - Git failed with a fatal error.  (0) 2017.07.05
(NuGet) NuGet 패키지 복원 하는 방법  (0) 2017.06.15
개발자가 읽어야할 책  (0) 2017.06.09
[주간닷넷].NET과 Docker를 함께 사용하기  (0) 2017.06.06
Socket.IO - Chat  (0) 2017.06.02

1.NuGet 이란

- NuGet은 주로 'NuPack'이라고 불리는 마이크로소프트의 개발 플렛폼에서 쓰이는 무료 또는 오픈소스의 패키지를 관리해주는 것으로 주로 C# 관련된 패키지가 많다.
- 오픈소스 기반의 라이브러리들을 솔루션에서 쉽게 가져와 쓸 수 있도록 해주는 도구라 할수 있겠다.
 * Nuget 사이트: https://www.nuget.org/

 2. NuGet 설치

- NuGet (https://www.nuget.org/) 사이트 에서 다운받아 설치 진행합니다.
- PC 에 설치된 프로그램을 기준으로 알아서 프로그램에 맞는 NuGet Package 를 선택하며 이를 설치 합니다.
- Visual Studio 에서 도구 메뉴에서 NuGet 패키지 관리자항목이 보이면
설치완료 된 것입니다.

3. NuGet 패키지 만들기

- 먼저 패키지 시킬 클래스라이브러리를 준비합니다. (예시 : KUtility)

- 아래와 같이 Nuget 폴더 밑에 버전을 관리할 목적의 Kutility 0.0.1 폴더, 그 하위에 NuGet Convention을 따르는 세 폴더 content, lib, tools 폴더를 만들어 놓습니다.

content : NuGet 에서 설치한 경우 프로젝트 루트에 들어갈 파일, 폴더(Test.txt)
lib : 실제 참조에 추가될 dll, net45 폴더는 dll 을 구동하기 위한 최소한의 프레임웍 버전을 표시하는 것
       으로 그  하위에 dll 을 복사합니다.(KUtility.dll)
tools : PowerShell 스크립트 파일들이 위치하는 곳으로 여기에 두면 NuGet 이용 설치 시 자동으로 실
            행됩니다.

-업로드할 패키지에 대한 메타정보를 가지고 있는 .nuspec 파일 생성 합니다.
- http://nuget.codeplex.com/releases/view/58939
   이곳에서 NuGet.exe 파일을 다운받아 환경변수에 추가합니다.
- cmd 창에서 프로젝트 폴더로 이동하여 nuget spec 명령어를 실행합니다.
   * 이 폴더 위치에서 실행시키는 이유는 *.csproj 파일 인식해서 nuspec 파일을 만들기 때문입니다.
 
C:\Projects\KFramework\KUtility>nuget spec
  'KUtility.nuspec'() 만들었습니다.

- KUtility.nuspec 파일을 열어 자신에 맞는 정보를 채워 넣습니다.

이때 기본값으로 두면 패키지 작업 시 아래와 같은 에러가 발생됩니다. 문제: 샘플 nuspec 값을 제거합니다. 설명: ProjectUrl에 대한 "http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE" 값은 샘플 값이므로 제거해야 합니다. 솔루션: 적합한 값으로 바꾸거나 제거하고 패키지를 다시 빌드하십시오.

- 변경 후 NuGet\KUtility 0.0.1 폴더 하위에 이동시킵니다
- cmd 창으로 .nuspec 파일이 있는 곳  (NuGet/Kutility 0.0.1 폴더)으로 이동하여 Nuget Pack 
  명령어를 실행합니다.

 

- 아래 그림과 같이 .nupkg 파일이 생성됩니다.

4. NuGet 에 등록하기
- cmd 창에서 KUtility.0.0.1.nupkg 이 있는 폴더로 이동하여 nuget push 명령어를 실행합니다.

C:\Projects\KFramework\Nuget\KUtility 0.0.1>nuget push .\KUtility.0.0.1.nupkg c**ced2d-9e78-466f-b3aa-4b9**4fa46c6 
 KUtility 0.0.1() NuGet 갤러리 (https://www.nuget.org)에 푸시하는 중...패키지가 푸시되었습니다.

- Push 명령어 수행 시 마지막 guid 처럼 생긴 것은 NuGet 에서 부여된 API Key 입니다.
- API Key NuGet 사이트에 가입하여 인증 메일을 확인하면 부여됩니다.

- cmd 창이 아닌 웹사이트 상에서도 업로드 가능합니다.

- 버전이 올라간 경우 버전을 변경 후 다시 push 하게 되면 알아서 같은 패키지로 인식하여 등록 됩니다.

 

5. NuGet 에 등록된 내 라이브러리 가져오기

- 솔루션이나 프로젝트에서 도구-NuGet 패키지 관리자-패키지관리자 콘솔에서
install-package 명령어를 실행합니다.

- 명령어를 실행하면 내 라이브러리가 참조에 추가되고 폴더구성 시 content 항목은 프로젝트에 추가된걸 확인할 수 있습니다.

 

** NuGet Package Explorer 패키지를 만들어 바로 배포가 가능합니다. **
- Package metadata 에서 해당 dll 에 대한 내용을 넣고 CONTENT 메뉴를 통해 폴더를 추가하고  
- FILE-Publish 
하여 자신의 API Key 로 배포합니다.
- https://npe.codeplex.com/ 이곳에서 다운로드 가능합니다.

 

+ Recent posts