2016-08-05 11 views
2

우리는 여러 솔루션으로 분리 된 여러 라이브러리 (우려 사항 분리)가 있습니다. 새로운 nuget 패키지의 각 체크마다 빌드가되며,이 다른 패키지에 의존하는 솔루션은 참조를 업데이트 할 수 있습니다.로컬 nuget 패키지를 만들고 dotnet 코어의 솔루션에서 로컬로 패키지를 작성하는 방법

이상적인 세계에서는 모든 것이 단위 테스트를 거쳐야합니다. CI는 원인 테스트를 거쳐야하지만 실제 테스트 결과와 일부 지점에서는 재현하기 어려운 일부 모서리 케이스 버그 표면과 일부 로컬 디버깅이 필요합니다.

우리 모두가 어떤 작은 프로젝트에서 어떤 점을 시도했는지 피하기 위해, 수정 사항이 아닌 작은 수정 사항으로 N 번 체크인하고 새 빌드를 얻는 것은 고통스럽고 시간 소모적입니다.

dotnet core를 사용하기 전에 필자는 참조 솔루션에서 이들을 디버깅하기 위해 로컬로 dll을 빌드하는 로컬 참조를 추가하고 커밋하기 전에 문제를 해결했습니다. dotnet 코어를 사용하면이 모든 것이 nupkg에 래핑되어야하기 때문에 가능하지 않은 것으로 판명되었습니다.

dotnet 코어에서도 이러한 사례를 처리하기위한 간단한 워크 플로우/프로세스가 필요합니까?

답변

2

이것은 내가 생각해 낸 결과이며, 아마도 누군가 더 좋은 방법을 가지고있을 것입니다. C에서 https://docs.nuget.org/create/hosting-your-own-nuget-feeds : \ localpackages 지역 피드를 사용

https://twitter.com/pksorensen/status/761590754301079552https://gist.github.com/pksorensen/df61ded634bad99f85cc68f91c230361

"scripts": { 
    "postcompile": [ 
     "nuget delete -Verbosity detailed -noninteractive -source %USERPROFILE%\\.nuget\\packages %project:name% %project:version%", 
     "nuget delete -Verbosity detailed -noninteractive -source c:\\localpackages %project:name% %project:version%", 
     "dotnet pack --no-build --configuration %compile:Configuration% -o ../../artifacts/", 
     "nuget add -Verbosity detailed -NonInteractive -source c:\\localpackages ../../artifacts/%project:name%.%project:version%.nupkg" 
    ] 
    } 

나는에 따라 피드를 추가했다.

  1. 그런 다음 각 빌드에 내가 팩과 이미 그래서 만약 내가도 (삭제 중 하나) 같은 버전을 삭제해야합니다하려면이 로컬 소스
  2. 에 패키지를 밀어 넣습니다.
  3. nuget도 사용자 폴더 글로벌 폴더에 패키지를 캐시하기 때문에 거기에서도 삭제해야합니다.

빌드가 완료되면이 로컬 패키지에 의존하는 솔루션에서 패키지를 마우스 오른쪽 단추로 간단히 복원 할 수 있습니다.

문제가 해결되면 두 솔루션을 모두 CI 시스템에 다시 커밋하면 패키지가 내 dev 컴퓨터에서만 사용할 수있는 로컬 피드가 아닌 일반 피드에서 해결됩니다.