如何在PowerShell脚本中使用NuGet包?

时间:2016-02-08 15:21:51

标签: c# .net powershell nuget nuget-package

我正在编写一个使用Mono.Cecil库的PowerShell脚本。我如何安装软件包,以便在脚本中使用它?谢谢!

(为了记录,在问这个之前我确实尝试过谷歌搜索,但所有出现的结果都是关于PMC和Visual Studio的结果,这与这个问题无关。)

3 个答案:

答案 0 :(得分:6)

~5.x版本的PowerShell默认包含一个nuget包源,但它不起作用:

PS > Get-PackageSource 
Name                             ProviderName     IsTrusted  Location
----                             ------------     ---------  --------
nuget.org                        NuGet            False      https://api.nuget.org/v3/index.json
PSGallery                        PowerShellGet    False      https://www.powershellgallery.com/api/v2/

如果您Unregister-PackageSource -Name nuget.orgRegister-PackageSource -Location https://www.nuget.org/api/v2 -name nuget.org -Trusted我已经能够在PowerShell中安装只有Install-Package的nuget papckages,而不是在visual studio中。从this SO answer获得了这个想法。

我不知道除去nuget.org源码的v3版本会有什么其他可能的负面影响,但我已经运行了一段时间,看起来没事,你的里程可能会有所不同。

作为替代方案,这里有一个例子,通过拉下nuget.exe来完成工作,即使它是一个非常糟糕的方式来执行此操作:

function Install-InvokeOracleSQL {
    $ModulePath = (Get-Module -ListAvailable InvokeSQL).ModuleBase
    Set-Location -Path $ModulePath

    if ($PSVersionTable.Platform -ne "Unix") {
        $SourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
        $TargetNugetExe = ".\nuget.exe"
        Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
        .\nuget.exe install Oracle.ManagedDataAccess
        Remove-Item -Path $TargetNugetExe
    } elseif ($PSVersionTable.Platform -eq "Unix") {
        nuget install Oracle.ManagedDataAccess.Core -Version 2.12.0-beta2
    }
}

答案 1 :(得分:4)

我能够通过指定源在PowerShell 6(核心)中安装软件包:

data = pd.read_csv(str(infilename), sep ='/t', header = None, skiprows = 2, index_col = None)

x = float((data.iloc[25].str.split(",", expand=True)[2]))-9000 #altering value

data.iloc[25].str.split(",", expand=True)[2]= x

print(data)
print(x)

答案 2 :(得分:-9)

无法找到一个好的解决方案,我最终只是通过NuGet API手动下载和解压缩包。

对于有此问题的人/其他人,here是我使用的代码。