我使用 C# 开发了一个二进制 cmdlet。该项目的 TargetFramework 是 netstandard2.0 并且程序集(dll)作为 NuGet 包发布。此程序集以及 NuGet 包具有一些依赖项(即其他 NuGet)。
在使用 PowerShell 的计算机上本地安装我的二进制 cmdlet 的最佳方法是什么,这样我的 cmdlet 就可以在该计算机上使用,以便从 PowerShell 脚本调用。即,我能否使用 Powershell 命令安装 NuGet,以便 PowerShell 可以使用我的 DLL 及其依赖项?
最佳答案
从 PowerShell 7.2 开始,不支持直接安装 NuGet 包。
- GitHub issue #6724请求这样的支持。
您的选择是:
如果可行,重新打包您的二进制 cmdlet 及其依赖项作为 PowerShell module , 然后可以通过
Import-Module
安装:- PowerShell 模块通常是一个以模块命名的目录,其中包含一个module manifest。文件 (
*.psd1
),其中包含关于模块的元数据以及构成模块实现的文件;在模块包装 cmdlet DLL 的情况下, list 的RootModule
条目引用该 DLL,而RequiredAssemblies
条目引用依赖项。 - 何时
Publish-Module
被调用以发布模块,它被打包为 具有自定义结构 的 NuGet 包,Import-Module
可以理解;通常,PowerShell 模块发布到 PowerShell Gallery . - 也许这是一个可行的起点:Creating a new module
- PowerShell 模块通常是一个以模块命名的目录,其中包含一个module manifest。文件 (
否则,使用辅助。 .NET SDK 项目来安装您的 NuGet 包,这是 this answer 中概述的一个重要过程.
- This MIT-licensed Gist包含辅助函数
Add-NuGetType
,它可自动执行该过程并另外支持 PowerShell (Core) 7+ 中的 native 库依赖项,如 this answer 中所述。 ;但是请注意,后者不提供严格的版本控制,因此不应在生产中使用。
- This MIT-licensed Gist包含辅助函数
关于c# - 如何从 NuGet 包安装 PowerShell 二进制 cmdlet (C#) 及其依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69990430/