You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从带依赖的NuGet包安装C#开发的PowerShell二进制Cmdlet

二进制Cmdlet本地安装最优方案

首先明确:完全可以通过PowerShell内置命令安装你发布的NuGet包,自动识别加载主dll及所有依赖项。由于你的项目TargetFramework为netstandard2.0,天然兼容Windows PowerShell 5.1和PowerShell 7+跨平台版本,最优方案为适配为PowerShell标准模块包后,使用内置模块管理命令安装。

方案一:标准生产环境方案(推荐)

前置调整:将现有NuGet包适配为PowerShell模块规范

仅需少量调整即可兼容PowerShell模块管理逻辑:

  • 在项目根目录新增和主程序集同名的 .psd1 模块清单文件,核心配置项如下:
    • RootModule:填写你的二进制Cmdlet dll文件名
    • CompatiblePSEditions:配置为 @('Desktop', 'Core') 兼容两类PowerShell版本
    • CmdletsToExport:显式列出你开发的所有Cmdlet名称,可大幅提升模块加载速度
    • 原有NuGet依赖项无需额外配置,保留你原有csproj或nuspec中的PackageReference定义即可
  • 打包时将.psd1文件、主dll、所有依赖dll都放到NuGet包的根目录,PowerShell会自动识别该结构为合法模块包

安装调用步骤

  1. 如果你使用私有NuGet源,先将源注册到PowerShell仓库列表:
Register-PSRepository -Name "自定义私有源名称" -SourceLocation "你的NuGet源v3地址" -InstallationPolicy Trusted
  1. 执行安装命令,会自动拉取主包及所有依赖项:
# 当前用户安装不需要管理员权限,全用户安装去掉-Scope CurrentUser参数,需要管理员权限
Install-Module -Name "你的NuGet包名" -Repository "你配置的源名称" -Scope CurrentUser
  1. 验证可用:直接调用你开发的Cmdlet即可,PowerShell会自动完成模块和依赖的加载
# 替换为你实际的Cmdlet名称测试
Get-YourCustomCmdlet

方案二:临时测试方案(无需调整NuGet包结构)

如果只是临时测试不想调整现有NuGet包,可通过以下方式安装加载:

  1. 用Install-Package直接安装普通NuGet包:
Install-Package -Name "你的NuGet包名" -Source "你的NuGet源地址" -Scope CurrentUser
  1. 找到包的本地安装路径,手动导入主dll,PowerShell会自动加载同目录下的所有依赖dll:
Import-Module "包安装路径\bin\netstandard2.0\你的主Cmdlet.dll"

注意:该方案不会将模块加入PowerShell的全局搜索路径,每次重启PowerShell会话都需要重新执行Import-Module操作,仅适合临时测试使用。

内容的提问来源于stack exchange,提问作者KarloX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:03