NuGet包中的辅助函数init.ps1必须是全局的吗?

时间:2011-03-23 14:01:44

标签: powershell nuget nuget-package

我想为NuGet package manager控制台编写几个命令以插入Gists from GitHub。我有4个基本命令

  • 列表 - 列表'用户'
  • Gist-Info 'gistId'
  • Gist-Contents 'gistId''fileName'
  • Gist-Insert 'gistId''fileName'

我的所有命令都依赖于一些实用功能,而我正在努力解决它们是否需要全局的问题。

# Json Parser
function parseJson([string]$json, [bool]$throwError = $true) {    
    try {
        $result = $serializer.DeserializeObject( $json );    
        return $result;
    } catch {                
        if($throwError) { throw "ERROR: Parsing Error"}
        else { return $null }            
    }
}

function downloadString([string]$stringUrl) {
    try {        
        return $webClient.DownloadString($stringUrl)
    } catch {         
        throw "ERROR: Problem downloading from $stringUrl"
    }
}

function parseUrl([string]$url) {
    return parseJson(downloadString($url));
}

我可以在全局函数之外使用这些实用程序函数,还是需要以某种方式将它们包含在每个全局函数定义范围内?

1 个答案:

答案 0 :(得分:7)

不,他们没有。从init.ps1开始,您可以导入一个您编写的PowerShell模块(psm1)文件并继续前进,这将是我们建议将方法添加到控制台环境的方式。

你的init.ps1看起来像这样:

param($installPath, $toolsPath)
Import-Module (Join-Path $toolsPath MyModule.psm1)

在MyModule.psm1中:

function MyPrivateFunction {
    "Hello World"
}

function Get-Value {
    MyPrivateFunction
}

# Export only the Get-Value method from this module so that's what gets added to the nuget console environment
Export-ModuleMember Get-Value

您可以在http://msdn.microsoft.com/en-us/library/dd878340(v=VS.85).aspx

获取有关模块的更多信息