2012-04-05 14 views
11

私はNuGetの初心者で、Mavenの世界から来ています。Nugetで第三者のライセンスを探す

私は最近、私たちのプロジェクトの第三者ライセンス情報を更新することになっています。 Mavenプロジェクトでは、license:download-licensesプラグインを使用してライセンス情報を取得できました。

Nugetを使用してこの情報を取得する方法があるのでしょうか?好ましくは、コマンドラインインターフェイスを使用して、CIビルドレベルで自動化することができます。大規模なマニュアルビルドステップからそれを削除する。

EDIT:

私はLegSec command line utilityを一緒に入れ、これを行うための任意のユーティリティを見つけることができませんでしたので。

+0

プロジェクトへのリンクを投稿していただき、ありがとうございます!私はLegSecを今日使用しました...コマンドラインの使い方は少し難解でしたが(試行錯誤)、機能は素晴らしかったです。 – crimbo

+0

明らかに、彼らは2013年からそれを行う方法を知っていますが、それは決してプログラムによって公開されたことはありません:https://blog.nuget.org/20131011/friendly-license-names.html。私はupvote:https://github.com/NuGet/Home/issues/5793をしたいかもしれない問題を開いた。 –

答えて

11

私が知っている限り、ライセンス情報をCIビルドの一部としてコマンドラインから直接入手することはできません。 .nu​​pkg zipファイルを開き、.nuspecファイルからライセンスURLを抽出し、このURLからライセンスをダウンロードするアプリケーションを作成する必要があります。

また、Visual Studio内のパッケージマネージャコンソールウィンドウを使用して、PowerShellを使用してライセンスファイルをダウンロードすることもできます。

プロジェクト内のすべてのパッケージのライセンスファイルを取得する簡単な例を以下に示します。これは、Get-Projectコマンドレットで行うことができるはずのソリューション内のすべてのプロジェクトを取得するために拡張する必要があります。これでも、ライセンスをダウンロードするためにスクリプトを実行する必要があります。

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

ちょうど注 - VS2015で 'LicenseUrl'は常に空の文字列を返します。 NuGetの文書によると、 'LicenseUrl'はv3.xから廃止予定ですが、代替手段については言及していません –

+2

NuGet 3.4以上でLicenseUrlが追加されました。 –

0

私は、次のコマンドを使用してライセンス情報を取得するために管理:

@(@(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

で、あなたのためにそれを行うVisual Studio用の非常に便利な拡張機能があります私の答えhere

をチェックソリューションを右クリックするだけです。

関連する問題