首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为PowerShellGet创建纯powershell Nuget模块

为PowerShellGet创建纯powershell Nuget模块
EN

Stack Overflow用户
提问于 2015-10-30 10:29:09
回答 1查看 8.5K关注 0票数 16

我想要的

我希望将PowerShell脚本的数量作为Nuget包发布到构建系统中。

我想使用PowerShellGet为我做安装工作和版本管理。

我不希望这些脚本成为任何Visual解决方案的一部分,而是作为独立的脚本。

使用情景

在任何系统上,配置的Nuget提供者用户都会执行:

代码语言:javascript
复制
Install-Module MyModule

从那时起,该模块的所有导出都将永久用于该用户的。此外,用户还可以再次调用该命令,以更新这些脚本的更新版本

我所做的

您可以在这里找到包的当前状态:GitHub

  1. 我已经向本地Nuget服务器添加并配置了Nuget提供者 若要执行此调用,请调用Get-PackageProvider -Name NuGet -ForceBootstrapSet-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted
  2. 创建适当的模块,可以通过Import-Module在本地导入
  3. 使用该模块创建并发布Nuget包

问题

我可以通过Install-Module cmdlet安装这个包,稍后我可以在Get-InstalledModule列表中看到它。

但是,没有可用的功能。

而且,无论如何,Install-Module都不会从我的包中调用任何脚本:

  • 不从ScriptsToProcess调用MyModule.psd1
  • 不从Install.ps1文件夹调用tools
  • 不从Init.ps1文件夹调用tools
  • 按模块导出的Cmdlet不可用,Import-Module无法导入模块

(从Visual Install-Package MyModule安装相同的包时,脚本被调用,PowerShell模块被导入)。

调查

由于PowerShellGet是基于OneGet的,所以问题似乎出现在Install-Package cmdlet中(在Install-Module cmdlet中称为Install-Package cmdlet)。

当我从Visual执行Install-Package MyModule时,调用Install.ps1Init.ps1。但是来自纯PowerShell的相同命令什么也不做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 02:25:04

经过长时间的逆向工程,我找到了根本原因

技术原因

必须在nuspec文件中将神奇标记PSModule添加到<Tags>中。

真实原因

,您不应该创建nuspec文件并手动打包nuget包在所有上。使用Publish-Module cmdlet代替。

如何把它做好

我用以下内容更新了powershellget模块GitHub

  • 可以发布的最小模块示例
  • 使用本地文件夹作为Nuget提要的一种方法
  • 该模块的发布、安装和使用
  • 没有依赖项的引用脚本,所有这些都是本地完成的,因此您可以研究它。

看看这个。

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33433824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档