LazowskiAnton · Extensions

PackageSmith

NuGet 패키지 버전을 작성된 바로 그 자리에서: 모든 패키지 줄 뒤에 최신 버전, 마우스를 올리면 전체 내역, Ctrl+.로 업데이트 — 그리고 취약하거나 사용되지 않는 패키지는 빌드보다 먼저 알려 줍니다.

무료 · Visual Studio 2022 및 2026 · UI 14개 언어 · 원격 분석 없음

PackageSmith를 쓰는 이유

PackageSmith가 없을 때와 있을 때의 같은 프로젝트 파일: 패키지 줄 뒤의 최신 버전

오래된 패키지를 한눈에

무엇이 오래되었는지 알기 위해 NuGet 창을 열 필요가 없습니다. 각 패키지 뒤에 최신 버전이 표시되며, 패치는 녹색, 마이너는 노란색, 메이저는 주황색입니다.

안전한 업데이트 먼저

알려진 취약성은 해당 줄에 빨간색으로 표시되고, 이를 수정한 가장 가까운 버전도 함께 표시됩니다. 사용되지 않는 패키지에는 대체 패키지가 표시됩니다.

사용자의 소스만

버전은 NuGet.config의 패키지 소스(nuget.org 또는 회사 피드)에서 가져옵니다. 패키지 이름과 버전만 요청하며, 사용자나 프로젝트에 관한 정보는 전혀 전송되지 않습니다.

조건 없는 무료

구독, ‘Pro’ 버전, 데이터 수집이 없고 출력 창이나 시작 시 메시지도 없습니다. 부탁드리는 것은 단 하나, 어느 정도 사용해 보신 뒤 Marketplace에 평가를 남겨 주시는 것뿐입니다. Visual Studio 2022 및 2026, x64 및 ARM64에서 작동합니다.

기능

줄 끝의 버전

모든 PackageReference, PackageVersion, package 줄 뒤에: 패키지가 최신이면 눈에 띄는 것이 없고, 그렇지 않으면 변경 폭의 색으로 최신 버전이 표시됩니다. 목록에서 제외된 버전은 제안되지 않으며, 시험판은 설정을 바꾸지 않는 한 이미 시험판을 사용하는 패키지에만 제안됩니다.

최신 버전과 취약한 패키지, 사용되지 않는 패키지가 표시된 Directory.Packages.props 파일
줄 뒤의미
✓ 최신패키지가 최신 버전입니다.
→ 8.0.4 패치세 번째 숫자만 바뀝니다: 수정.
→ 6.5.1 마이너두 번째 숫자가 바뀝니다: 새 기능, 호환성을 깨는 변경은 의도하지 않음.
→ 5.0.2 메이저첫 번째 숫자가 바뀝니다: 호환성을 깨는 변경이 들어가는 곳.
⚠ 취약 · 높음사용 중인 버전에 알려진 보안 취약성이 있으며, 심각도가 함께 표시됩니다.
사용되지 않음 · … 사용작성자가 패키지를 더 이상 사용하지 않도록 지정하고, 대신 사용할 패키지를 알려 줍니다.

마우스를 올리면 나타나는 카드

코드의 버전이나 줄 뒤의 텍스트에 포인터를 올리면 카드에 설명, 더 새로운 각 버전 계열의 최신 버전(8.0.0 패키지의 경우 10.0.13, 9.0.10, 8.0.21)과 날짜, 더 새로운 버전이 몇 개 더 있는지, 취약성과 이를 피하는 가장 가까운 업데이트, 그리고 …(으)로 업데이트, nuget.org에서 열기, 프로젝트 사이트 단추가 표시됩니다. 목록의 버전을 클릭하면 그 버전으로 설정됩니다.

각 계열의 최신 버전이 표시된 취약한 패키지의 카드

Ctrl+.로 업데이트

패키지 줄에 캐럿을 두고 Ctrl+.: 최신 패치, 최신 마이너, 최신 메이저가 따로 제안되므로 안전한 업데이트는 언제나 키 하나면 됩니다. 이 파일의 모든 패키지를 메이저 버전 안에서 업데이트는 각 패키지를 같은 메이저 안의 최신 버전으로 올립니다 — 메이저 업데이트는 따로 결정합니다. 속성($(ContosoVersion))에서 온 버전은 파일에서 속성을 정의한 곳에서 업데이트됩니다. 파일은 수동 변경처럼 편집되므로 실행 취소가 작동하고, Visual Studio가 평소처럼 패키지를 복원합니다.

패키지의 패치, 마이너, 메이저 업데이트가 표시된 전구

설정

도구 → 옵션 → SmithWorks → PackageSmith. 모든 옵션에 설명이 있습니다.

옵션기본값
각 패키지 뒤에 최신 버전 표시켜짐
최신 패키지에 "✓ 최신" 표시켜짐
모든 패키지에 시험판 버전 제안꺼짐
소스에서 찾을 수 없는 패키지 표시꺼짐
취약하거나 사용되지 않는 패키지 표시켜짐
마우스를 올리면 카드 표시켜짐
Ctrl+.로 업데이트켜짐
다시 확인 간격1시간
오프라인꺼짐
Marketplace 평가 요청켜짐

설정은 %LocalAppData%\PackageSmith에 저장되며, 캐시된 버전도 그 옆에 저장됩니다.

PackageSmith 옵션 페이지
옵션 페이지.

자주 묻는 질문

PackageSmith는 데이터를 전송하나요?

파일에 있는 패키지의 버전을 패키지 소스(NuGet.config에서, 없으면 nuget.org)에 요청합니다. Visual Studio가 패키지를 복원할 때 보내는 것과 같은 요청입니다. 그 밖에는 아무것도 전송되지 않습니다: 원격 분석도, 프로젝트 이름도, 사용자에 관한 정보도 없습니다. 오프라인을 켜면 요청을 전혀 보내지 않습니다.

회사 피드에 로그인이 필요합니다. 작동하나요?

아직은 아닙니다: 자격 증명이 필요한 피드는 건너뛰며, 해당 패키지에는 아무것도 표시되지 않습니다 — 잘못된 정보는 표시되지 않습니다. 공개 v3 피드(nuget.org, 공개 회사 피드)는 작동합니다.

일부 패키지 뒤에 아무것도 없는 이유는 무엇인가요?

버전이 범위나 와일드카드([1.0,2.0), 13.*)이거나, 속성이 다른 파일에 정의되어 있거나, 어떤 소스도 응답하지 않으면 아무것도 표시되지 않습니다. 소스에서 찾을 수 없는 패키지 표시를 켜면 모든 소스가 없다고 응답한 패키지를 볼 수 있습니다.

중앙 패키지 관리에서도 작동하나요?

예: Directory.Packages.props의 모든 PackageVersion 뒤에 버전이 표시되며, 프로젝트의 VersionOverride에도 표시됩니다.

업데이트하면 패키지가 복원되나요?

PackageSmith는 파일만 편집합니다. 버전을 직접 편집할 때와 마찬가지로 변경 후 Visual Studio가 패키지를 복원합니다.

LensSmith와 함께 작동하나요?

예. 둘 다 줄 끝에 쓰기 때문에 그 공간을 나눠 씁니다: 버전이 먼저, LensSmith의 NuGet 경고가 그 뒤에 표시됩니다.

문제를 보고하거나 기능을 제안하려면 어디로 가야 하나요?

GitHub의 Feedback 리포지토리에 이슈를 등록하세요. 버그와 아이디어를 위한 양식이 있습니다(비공개 이름은 바꿔 주세요). Marketplace의 Q&A 탭을 이용할 수도 있습니다.

변경 내역

1.0.1

1.0.0