加载模块时未处理清单
Manifest not processed when loading module
我已经创建了一个 PowerShell 模块和一个清单,但似乎在加载模块时没有处理清单。
我创建了一个具有相同行为的非常简单的示例:
TestModule.psm1
function Foo
{
return "Bar"
}
然后我创建一个这样的清单:
$version = New-Object System.Version(0, 0, 1, 0)
New-ModuleManifest -Author "Remko Weijnen" -Description "TestModule" -ModuleVersion $version -PowerShellVersion 3.0 `
-Path ".\TestModule.psd1" -RootModule ".\TestModule.psm1"
我创建了一个文件夹 TestModule
并在其中放置了 TestModule.psm1
和 TestModule.psd1
。
导入清单时版本被正确识别:
Import-Module .\TestModule.psd1
Get-Module TestModule | select name, version
Name Version
---- -------
TestModule 0.0.1.0
然而,当我加载模块时,无法识别版本:
Import-Module .\TestModule.psm1
Get-Module TestModule | select name, version
Name Version
---- -------
TestModule 0.0
我错过了什么吗?或者它不应该像这样工作?
这几乎就是您应该期望的工作方式。当您显式导入 .psm1 文件时,您会绕过清单。 .psm1 文件中没有任何内容表明要加载清单。如果您遵循 "normal" 模块行为(通过 "installing" 模块到 modulepath 环境变量中列出的路径),那么清单将按预期加载。
我已经创建了一个 PowerShell 模块和一个清单,但似乎在加载模块时没有处理清单。
我创建了一个具有相同行为的非常简单的示例:
TestModule.psm1
function Foo
{
return "Bar"
}
然后我创建一个这样的清单:
$version = New-Object System.Version(0, 0, 1, 0)
New-ModuleManifest -Author "Remko Weijnen" -Description "TestModule" -ModuleVersion $version -PowerShellVersion 3.0 `
-Path ".\TestModule.psd1" -RootModule ".\TestModule.psm1"
我创建了一个文件夹 TestModule
并在其中放置了 TestModule.psm1
和 TestModule.psd1
。
导入清单时版本被正确识别:
Import-Module .\TestModule.psd1
Get-Module TestModule | select name, version
Name Version
---- -------
TestModule 0.0.1.0
然而,当我加载模块时,无法识别版本:
Import-Module .\TestModule.psm1
Get-Module TestModule | select name, version
Name Version
---- -------
TestModule 0.0
我错过了什么吗?或者它不应该像这样工作?
这几乎就是您应该期望的工作方式。当您显式导入 .psm1 文件时,您会绕过清单。 .psm1 文件中没有任何内容表明要加载清单。如果您遵循 "normal" 模块行为(通过 "installing" 模块到 modulepath 环境变量中列出的路径),那么清单将按预期加载。