加载模块时未处理清单

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.psm1TestModule.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 环境变量中列出的路径),那么清单将按预期加载。