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

dotnet pack命令报错MSB1003且未输出到指定nupkgs目录如何解决

问题修复方案

根本原因

CommandUtility.runCommand 每次调用都会启动独立的系统子进程,前一次调用中执行的 cd 目录切换仅对当次进程生效,第二次调用 dotnet pack 时,子进程的工作目录仍为程序的默认启动目录,因此无法找到目标路径下的 .csproj 文件,也不会将生成的包输出到指定的 nupkgs 目录。你看到的 bin/Debug 下的包,是 dotnet pack 找不到指定工作目录时,fallback 到默认编译输出路径的结果。

修复方法

你可以选择以下任意一种方案解决:

  • 方案1:合并命令到同一次进程调用
    将目录切换、文件夹创建、打包命令合并为同一次 runCommand 调用,保证路径切换全程生效:
    // 加入-p参数避免nupkgs目录已存在时mkdir报错
    CommandUtility.runCommand($"cd {templateGitPath} && mkdir -p nupkgs && dotnet pack --no-build --output nupkgs");
    
  • 方案2:直接指定命令的工作目录(更稳定,推荐)
    绝大多数命令执行工具都支持设置子进程的工作目录参数,不需要手动写cd命令切换,也能避免跨平台路径兼容问题:
    // 优先用代码API创建目录,比调用命令行更稳定
    string nupkgDir = Path.Combine(templateGitPath, "nupkgs");
    Directory.CreateDirectory(nupkgDir);
    
    // 执行打包时直接指定工作目录为项目根路径
    CommandUtility.runCommand("dotnet pack --no-build --output nupkgs", workingDirectory: templateGitPath);
    

如果调整后仍然有路径歧义,可以直接在打包命令中指定 .csproj 路径和输出目录的绝对路径,彻底规避工作目录识别问题:
dotnet pack 你的项目.csproj绝对路径 --no-build --output 你的nupkgs目录绝对路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:15:04