我想要的
我想将一些PowerShell脚本作为Nuget包发布,以便在构建系统上使用。
我想使用PowerShellGet为我做安装工作和版本管理。
我不希望这些脚本成为任何Visual Studio解决方案的一部分,而是作为独立脚本。
使用场景
在任何系统上,使用配置的Nuget提供程序,用户执行:
Install-Module MyModule
从那时起,所有来自该模块的导出对该用户永久可用。用户还可以再次调用该命令以更新这些脚本的版本。
我所做的
您可以在此处找到软件包的当前状态:GitHub
1.我已将Nuget提供程序添加到本地Nuget服务器并进行了配置
为此,请调用Get-PackageProvider -Name NuGet -ForceBootstrap
和Set-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted
1.创建了合适的模块,可以通过Import-Module
导入到本地
1.使用该模块创建并发布了Nuget包
问题
我可以通过Install-Module
cmdlet安装该软件包,稍后可以在Get-InstalledModule
列表中看到它。
但是,没有可用的功能。
此外,无论如何,但Install-Module
不调用任何脚本从我的包:
- 未从
MyModule.psd1
调用ScriptsToProcess
- 未从
tools
文件夹调用Install.ps1
- 未从
tools
文件夹调用Init.ps1
- 由模块导出的Cmdlet不可用,并且无法由
Import-Module
导入模块
(Same从Visual Studios Install-Package MyModule
安装、调用脚本、导入PowerShell模块时,软件包工作正常)。
调查
由于PowerShellGet
基于OneGet
,因此问题似乎出在Install-Package
cmdlet(在Install-Module
cmdlet内部调用)中。
当我在Visual Studio中执行Install-Package MyModule
时,调用了Install.ps1
和Init.ps1
。但纯PowerShell中的相同命令什么也不做。
1条答案
按热度按时间8nuwlpux1#
经过长时间的逆向工程我找到了根本原因
技术原因
必须将魔法标记
PSModule
添加到nuspec文件中的<Tags>
。真正的原因
Publish-Module
cmdlet。如何正确操作
我更新了powershellget-module GitHub:
你看