如何打包 PowerShell 二进制 Cmdlet 以从 Azure DevOps 库安装
How to pack PowerShell Binary Cmdlet to install from Azure DevOps Gallery
我有一个用 C# 编写的 PowerShell cmdlet。当我编译它并在本地将其传递给 Import-Module 时,它工作正常。但是,到目前为止,还没有 nuget pack 的组合产生我可以从 Azure DevOps Artifact Gallery 安装的包。我可以轻松打包和安装脚本模块,但不是二进制模块。
我已将所有文件放在一个基本目录中。我已将文件放入 'tools' 目录。我已将模块 dll 放在基本目录中,将参考 dll 放在 'lib' 目录中。没有任何效果。
在检查了几个 Microsoft cmdlet 后,我找到了答案。
在 *.psd1 中有 FunctionsToExport
的部分,但也有 CmdletsToExport
的部分,您应该在该部分列出此模块中的二进制 cmdlet。
两个主要区别是:RootModule
是带前缀的 dll 名称,cmdlet 列在 CmdletsToExport
.
下
似乎不需要特定目录,因此您可以使用 nuget.exe <snip> -Properties NoWarn=NU5100
来阻止 nuget.exe 警告您关于 'lib' 目录。
我有一个用 C# 编写的 PowerShell cmdlet。当我编译它并在本地将其传递给 Import-Module 时,它工作正常。但是,到目前为止,还没有 nuget pack 的组合产生我可以从 Azure DevOps Artifact Gallery 安装的包。我可以轻松打包和安装脚本模块,但不是二进制模块。
我已将所有文件放在一个基本目录中。我已将文件放入 'tools' 目录。我已将模块 dll 放在基本目录中,将参考 dll 放在 'lib' 目录中。没有任何效果。
在检查了几个 Microsoft cmdlet 后,我找到了答案。
在 *.psd1 中有 FunctionsToExport
的部分,但也有 CmdletsToExport
的部分,您应该在该部分列出此模块中的二进制 cmdlet。
两个主要区别是:RootModule
是带前缀的 dll 名称,cmdlet 列在 CmdletsToExport
.
似乎不需要特定目录,因此您可以使用 nuget.exe <snip> -Properties NoWarn=NU5100
来阻止 nuget.exe 警告您关于 'lib' 目录。