সমস্ত ব্যবহৃত নুগেট প্যাকেজগুলির জন্য লাইসেন্স সম্পর্কিত তথ্য পান


26

আমাদের ঘরটি সুশৃঙ্খল রাখতে, আমি ম্যানুয়ালি যুক্ত না করে আমাদের ডকুমেন্টেশনে প্রকল্প নির্ভরতার জন্য লাইসেন্সগুলি স্বয়ংক্রিয়ভাবে জমা করতে চাই।

প্রোগ্রামিং পদ্ধতিতে সিএসপিআরজে ফাইলগুলির একটি সেট ট্র্যাভার করার এবং লিঙ্ক বা স্ট্রিং হিসাবে রেফারেন্সড প্যাকেজগুলির লাইসেন্স সংক্রান্ত তথ্য সংগ্রহের কোনও সহজ উপায় কি কেউ জানেন?


আপনি যখন লাইসেন্স সম্পর্কিত তথ্য বলছেন তখন আপনি বোঝাতে চাইছেন একটি লাইসেন্সের ধরণ বা ওয়েবে লাইসেন্স পৃষ্ঠাতে নির্দেশিত কোনও লিঙ্ক? কনসোল উইন্ডোতে বা উদাহরণস্বরূপ, কোনও সিএসভি / এইচটিএমএল ফাইলে আপনি কীভাবে এই তথ্যটি ফিরে আসতে চান?
mguassa

আমি লিঙ্ক বা একটি স্ট্রিং নিতে পারে। আমি আরও প্রথম স্থানে তথ্য অ্যাক্সেস করার জন্য একটি প্রোগ্রামেটিক উপায় খুঁজছি
বায়রন রস

উত্তর:


25

ওয়ান ওয়ে আমি যেমন তথ্য পেতে পারি ব্যবহার করা PowerShell মধ্যে প্যাকেজ ম্যানেজার কনসোল , ভিতর থেকে ভিসুয়াল স্টুডিও

প্যাকেজ ম্যানেজার কনসোলটি ভিজুয়াল স্টুডিওর মধ্যে একটি পাওয়ারশেল কনসোল যা নিউগেটের সাথে ইন্টারঅ্যাক্ট করতে এবং ভিজ্যুয়াল স্টুডিওগুলিকে স্বয়ংক্রিয় করতে ব্যবহৃত হয়।

মূলত আপনি একটি নির্দিষ্ট প্রকল্পে (বা সম্পূর্ণ সমাধানে) প্যাকেজগুলির তালিকা নির্ধারণের জন্য গেট-প্যাকেজ সেন্টিমিডলেট ব্যবহার করতে পারেন । প্রতিটি প্যাকেজের লাইসেন্স সংক্রান্ত তথ্য সম্পর্কিত, আমি যা দেখেছি তার জন্য আপনি কেবল লাইসেন্সের URL টি পেতে পারেন এবং কেবল লাইসেন্সের ধরণের প্রতিনিধিত্বকারী একটি সংক্ষিপ্ত স্ট্রিং নয়।

আমার সমাধানের প্রবেশের একটি তালিকা প্রবেশের জন্য উদাহরণ, এখানে প্রতিটি প্যাকেজ শনাক্তকারী এবং লাইসেন্সের লিঙ্কটি অন্তর্ভুক্ত রয়েছে:

Get-Package | Select-Object Id,LicenseUrl

আউটপুটটি এরকম কিছু:

প্যাকেজ আউটপুট

যে অন্যান্য উপাদানগুলি ফিরে আসতে পারে সেগুলি মেটাডেটা বিভাগে (যেমন প্যাকেজের সংস্করণ, একটি সংক্ষিপ্ত বিবরণ ইত্যাদি) নসপেক রেফারেন্সে নথিভুক্ত করা হয় ।


কেবল একটি নোট - ভিএস ২০১৫-তে 'লাইসেন্সআরএল' সর্বদা একটি খালি স্ট্রিং দেয়। নুগেট ডকুমেন্টেশন বলেছে যে 'লাইসেন্স ইউআরএল' ওয়ার্ডগুলিতে ভি 3.x থেকে অবহেলা করা হবে, বুটগুলি কোনও বিকল্প সম্পর্কে উল্লেখ করে না
জেমস পোলুস

VS2017 এর মাধ্যমে 4/24 পর্যন্ত এই উত্তরটি কাজ করে।
justSteve

8

একাধিক উত্সের ভিত্তিতে, আমি একটি পাওয়ারশেল স্ক্রিপ্ট তৈরি করেছি যা সমস্ত নুগেট প্যাকেজগুলি পড়ে এবং লাইসেন্স ফাইলগুলি নিয়ে আসে এবং "লাইসেন্সস" নামে একটি ফোল্ডারে রাখে। স্ক্রিপ্টটি প্রকল্পের মূলটিতে চালানো উচিত (যেখানে "প্যাকেজগুলি" ফোল্ডারটি অবস্থিত)।

# Run in Package Manager Console with `./download-packages-license.ps1`.
# If access denied, execute `Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned`.

Split-Path -parent $dte.Solution.FileName | cd; New-Item -ItemType Directory -Force -Path ".\licenses";
@( Get-Project -All | ? { $_.ProjectName } | % {
    Get-Package -ProjectName $_.ProjectName | ? { $_.LicenseUrl }
} ) | Sort-Object Id -Unique | % {
    $pkg = $_;
    Try {
        if ($pkg.Id -notlike 'microsoft*' -and $pkg.LicenseUrl.StartsWith('http')) {
            Write-Host ("Download license for package " + $pkg.Id + " from " + $pkg.LicenseUrl);
            #Write-Host (ConvertTo-Json ($pkg));

            $licenseUrl = $pkg.LicenseUrl
            if ($licenseUrl.contains('github.com')) {
                $licenseUrl = $licenseUrl.replace("/blob/", "/raw/")
            }

            $extension = ".txt"
            if ($licenseUrl.EndsWith(".md")) {
                $extension = ".md"
            }

            (New-Object System.Net.WebClient).DownloadFile($licenseUrl, (Join-Path (pwd) 'licenses\') + $pkg.Id + $extension);
        }
    }
    Catch [system.exception] {
        Write-Host ("Could not download license for " + $pkg.Id)
    }
}

দাবি অস্বীকার: আমি কোনও পাওয়ারশেল বিশেষজ্ঞ নই। আপনার নিজের ঝুঁকিতে চালান :)

লাইসেন্সের ফাইলের ভিত্তিতে নুগেট প্যাকেজটির কোন লাইসেন্স রয়েছে তা সনাক্ত করে এমন কোনও সাধারণ কোড আমি পাইনি। সমাধানের নিকটে আসা একমাত্র প্রকল্প হ'ল লাইসেন্সদাতা , তবে এটি রুবিতে নির্মিত।


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"}}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.