2012-04-05 38 views
11

Tôi là một người mới của NuGet và đã đến từ thế giới Maven.Tìm giấy phép của bên thứ ba với Nuget

Gần đây, tôi đã được giao nhiệm vụ cập nhật thông tin giấy phép của bên thứ ba cho các dự án của chúng tôi. Làm việc với các dự án Maven tôi đã có thể sử dụng plugin license:download-licenses để nhận thông tin giấy phép.

Điều tôi đang tự hỏi là liệu có cách nào để lấy thông tin này bằng Nuget không? Tốt hơn là bằng cách sử dụng giao diện dòng lệnh để tôi có thể tự động hóa nó ở cấp độ xây dựng CI. Để loại bỏ nó khỏi bước xây dựng trước thủ công lớn.

EDIT:

Kể từ khi tôi đã không thể tìm thấy bất kỳ tiện ích để làm điều này tôi cùng nhau đưa các LegSec command line utility.

+0

Cảm ơn bạn đã đăng liên kết tới dự án của mình! Tôi đã sử dụng LegSec ngày hôm nay ... việc sử dụng dòng lệnh là một chút khó khăn để tìm ra (một số lỗi dùng thử +), nhưng chức năng này rất tuyệt. – crimbo

+0

Dường như họ biết cách làm điều đó từ năm 2013, nó không bao giờ được tiếp xúc theo lập trình: https://blog.nuget.org/20131011/friendly-license-names.html. Tôi đã mở một vấn đề bạn có thể muốn upvote: https://github.com/NuGet/Home/issues/5793. –

Trả lời

11

Theo tôi biết không có gì hiện có sẵn để lấy thông tin giấy phép trực tiếp từ dòng lệnh như là một phần của quá trình xây dựng CI. Bạn sẽ cần phải tạo một ứng dụng để mở tệp zip .nupkg, trích xuất url giấy phép từ tệp .nuspec và tải xuống giấy phép từ url này.

Hoặc bạn có thể sử dụng cửa sổ bảng điều khiển trình quản lý gói bên trong Visual Studio và với một chút PowerShell tải xuống tệp giấy phép.

Ví dụ đơn giản nhận tệp giấy phép cho tất cả các gói trong dự án được hiển thị bên dưới. Điều này sẽ cần phải được mở rộng để có được tất cả các dự án trong giải pháp mà bạn có thể thực hiện với lệnh ghép ngắn Get-Project. Điều này vẫn sẽ yêu cầu ai đó chạy tập lệnh để tải xuống giấy phép.

$wc = New-Object System.Net.WebClient 
Get-Package -ProjectName YourProject | ForEach-Object { 
    $wc.DownloadFile($_.LicenseUrl, 'd:\licenses\' + $_.Id + ".html") 
} 
+2

Chỉ cần lưu ý - Trong VS2015 'LicenseUrl' luôn trả về một chuỗi rỗng. Tài liệu NuGet nói 'LicenseUrl' sẽ không được chấp nhận từ v3.x trên các phường, nhưng không đề cập đến bất kỳ giải pháp thay thế nào –

+2

LicenseUrl đã được thêm trở lại trong NuGet 3.4 trở lên. –

0

tôi quản lý để có được thông tin giấy phép với lệnh sau đây:

@(@(Get-Project -All | ForEach-Object { 
    Get-Package -ProjectName $.ProjectName 
}) | Select Id -Unique) | ForEach-Object { 
    $pkg = $_ 
    $pkgId = $_.Id 
    if ($pkgId -notlike 'microsoft*') { 
     $url = Open-PackagePage $pkgId -License -WhatIf -PassThru 
     Write-Host "$pkgId $url" 
    } 
} 
0

Kiểm tra câu trả lời của tôi here

Có một extension rất hữu ích cho Visual Studio nào đó cho bạn, với chỉ cần nhấp chuột phải vào giải pháp.

Các vấn đề liên quan