NuGet으로 관리

6576 단어 get
모든 여자는 가방이 많다.사실 남자도 있지만 프로그램을 쓸 줄 아는 남자만 코드 세계의 큰 가방과 작은 가방을 가지고 있다.이런 큰 가방과 작은 가방은 돈을 주고 산 것도 있고, 개원시장에서 구한 것도 있고, 자신이나 동료가 직접 만든 것도 있다.
가방은 고장나기 쉽고 업데이트가 빠르며 신상품이 많다는 특징이 있다.그래서 시장에는 가방 전문점이 생겼고 집에는 가방을 전문적으로 넣는 옷장이 생겼다.그래서 여자들은 가방을 사러 자주 거리를 돌아다니며 옷장 안의 가방을 정리한다.남자는 쇼핑을 좋아하지 않고 정리하는 것을 좋아하지 않아요...점점 더 많은 가방에 직면하여 많은 사람들이'프로그램을 쓸 줄 아는 남자'를 하는 것은 어렵다고 감탄한다.
드디어 이런 큰 가방과 작은 가방의 어려움을 견디지 못하는 사람이 생겼다. 가방을 전문적으로 보관하는'저장함'이 세상에 나왔다. 바로 NuGet(http://nuget.codeplex.com/이다."New-Get", 중국어 번역-"새로 산 가방"은 가방이 아무리 많아도 버리고 싶으면 버리고 사고 싶으면 사고 누겟이 챙겨준다는 뜻이다.
프로그래머를 쓸 줄 알아요. 가방에 시달렸어요?누겟 쓰세요.무료일 뿐만 아니라, 개원할 뿐만 아니라, 마음대로 자신이 좋아하는 캐비닛으로 개조할 수 있다.
NuGet을 사용하는 방법은 두 가지입니다.
하나는 잘 알려진 온라인 무료 가방 전문점인 http://nuget.org/List/Packages으로 VS2010 플러그인NuGet Package Manager을 통해 자신의 가방을 쉽게 선택할 수 있다.
하나는 회사나 자신의 집에 자신의 NuGet 서버를 설치하는 캐비닛을 설치하는 것이다.자신의 NuGet 서버를 설치하는 방법은 정원의 두 문장을 참고할 수 있다.
1.  내부 NuGet 서버 설치
2.  자체 NuGet 서버 설치
블로그 개발팀의 캐비닛을 보여드릴게요.
2011년 6월 어느 날, 블로그 개발팀도 자신의 캐비닛을 가지게 되었다.
현재 캐비닛에 주로 저장된 것은 매우 중요한 가방인 CNBlogsDomain이다. 이것은 우리의 영역 구동 개발(DDD) 구조의 공공 부분을 포함하고 각 응용 개발 프로젝트에 인용된다.
NuGet이 없는 날에...
  • CNBlogsDomain에서 컴파일한 여러 dll 파일을 각 항목의 인용 폴더에 복사합니다.CNBlogsDomain을 업데이트할 때마다 이렇게 해야 합니다.

  • NuGet이 생기면서 생활이 바뀌었어요... 
    1. 자신의 NuGet 서버에 CNBlogsDomain 패키지를 게시합니다.
  • CNBlogsDomain에publish 폴더를 만듭니다.
  • NuGet 패키지를publish 폴더(NuGet.exe,지금 다운로드에 다운로드합니다.
  • NuGetPackageUploader를 다운로드합니다.exe 패키지 업로드기(지금 다운로드)는publish 폴더에 있으며, 이 패키지 업로드기는 정원lovecindywang에서 개발소스 코드 다운로드했다.
  • NuGetPackageUploader 수정exe.config, endpoint address를 NuGet 서버 주소로 변경합니다.
  • publish 폴더에 NuGetRelease를 만듭니다.bat 일괄 처리 파일, 가방 제작 및 업로드 완료.예제 코드는 다음과 같습니다.
    nuget pack ..\CNBlogs.Domain.Core\CNBlogs.Domain.Core.csproj
    NuGetPackageUploader
    .

  • 패키지를 게시할 때는 NuGetRelease를 실행하기만 하면 됩니다.bat,nuget 명령은.csproj 파일이 자동으로 패키지를 완성하고 NuGetPackageUploader는 현재 폴더의 모든 패키지 (.nupkg 파일) 를 NuGet 서버에 업로드합니다.

  • 2. 프로젝트에서 자신의 NuGet 서버에 있는 패키지를 선택합니다.
  • VS2010 플러그인NuGet Package Manager을 설치하고 Package Manager의 Package Sources에 "패키지"를 저장할 자체 NuGet 서버의 웹 주소를 추가합니다.
  • 해당 항목에 필요한 "백"을 선택하여 설치합니다.
  • 설치가 완료되면 NuGet은 현재 프로젝트의 폴더에 패키지를 생성합니다.config(현재 프로젝트에 어떤 가방을 사용했는지 표시), 파일 형식은 다음과 같다:
  • <?xml version="1.0" encoding="utf-8"?>
    <packages>
    <package id="CNBlogs.Domain.Core" version="1.0.0.1" />
    </packages>

    현재 해결 방안의 루트 디렉터리에 패키지 폴더를 생성합니다. 선택한 패키지는 여기에 다운로드되고 리소스도 생성됩니다.config 파일(각 패키지s.config의 위치에 저장됨) 파일 형식은 다음과 같습니다.
    <?xml version="1.0" encoding="utf-8"?>
    <repositories>
    <repository path="..\CNBlogs.Applicaion.Demo\packages.config" />
    </repositories>

    이렇게 해서 자신의 가방을 쓰기 시작했다.

  • 3. 가방의 업그레이드
    여기서 계속해서 우리 가방의 이름이 CNBlogsDomain이라고 가정해 봅시다.
  • 우선, 우리는 CNBlogsDomain에서 상응하는 Assembly의 버전 번호를 수정하고 컴파일하여 이것은 새로운 가방임을 나타냈다.
  • 다음에 위에서 언급한 NuGetRelease를 실행합니다.bat 배치 파일, 새 패키지를 NuGet 서버에 게시합니다.
  • 에 이어 이 가방을 사용하는 항목에서 VS2010을 통해 Package Manage Console를 열고 Update-Package 명령을 실행하여 새 가방으로 업데이트한다.NuGet은 패키지 폴더에서 이전 패키지를 자동으로 삭제하고 새 패키지를 다운로드합니다.

  • ?사용 중 발생한 문제
    -a. 구성 파일에 따라 repositories.config 자동 다운로드 패키지
    질문 시나리오:
    한 사람이 한 항목에 모든 가방을 추가한 후에 NuGet 관련 프로필(repositories.config와packages.config 파일)만 코드 버전 라이브러리에 넣고 패키지 폴더에 있는 가방을 넣지 않으려고 합니다.다른 사람이 코드를 서명한 후 이 가방들을 다시 다운로드해야 하는데, NuGet 명령은 패키지에 따라만 제공된다.config 패키지 다운로드 기능(repositories. config는 각 하위 항목 폴더에 분산되어 있음)은 Repositories에 따라 제공되지 않습니다.config 패키지 다운로드 기능(repositories.config가 저장하는 것은packages.config 파일의 위치).
    해결 방법:
    패키지 폴더에 일괄 처리 파일 (install.bat) 을 쓰고 PowerShell 스크립트를 통해 Repositories를 읽습니다.config, 각packages를 얻습니다.config의 위치를 입력하고 NuGet 명령에 전달합니다.코드는 다음과 같습니다.
    powershell.exe -command "[xml]$config = Get-Content repositories.config;
    foreach( $repository in $config.repositories.repository){ .\NuGet install $repository.path} "

    (왜.ps1 파일에 직접 쓰지 않습니까? PowerShell의 실행 제한을 건너뛰기 위해서입니다. 그렇지 않으면 Set-ExecutionPolicy RemoteSigned를 먼저 실행해야 합니다.)
    -b. 버전 변경 없이 가방도 업데이트 가능
    질문 시나리오:
    NuGet은 가방을 업데이트할 때마다 다른 버전 번호의 가방을 발표해야 합니다.때때로 우리는 아주 적은 변경만 했을 뿐 버전 번호를 수정하고 싶지 않다.
    임시 해결 방법:
    이전 문제의 일괄 처리 파일을 계속 사용하고 실행하기 전에 패키지 폴더의 모든 가방을 삭제한 다음 모든 가방을 다시 다운로드합니다.
    -- 추가 해결 방법은 NuGet의 소스 코드를 수정해야 합니다.
    소결
    프로그래머는 NuGet을 통해 자신의 가방을 관리할 수 있다. 그 여자는 어떻게 자신의 가방을 관리해야 하는가?
    프로그래머의 천성은 코드 해결만이 아니라 문제 해결을 좋아하는 것이다.만약 당신이 프로그램을 쓸 줄 아는 남자라면, 코드 세계의 지혜를 현실 세계로 가져와 당신이 좋아하는 여자가 문제를 해결하도록 도와주세요.

    좋은 웹페이지 즐겨찾기