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

如何使用Dotnet CLI在无项目文件时下载NuGet包?

解决跨平台用Dotnet CLI替代NuGet.exe还原指定包的问题

方法1:直接使用dotnet nuget install命令(无需项目文件)

这是最直接的替代方案,不需要任何项目文件,直接指定包名、版本和输出目录即可完成下载:

# 安装单个指定包
dotnet nuget install package.a -v X.Y.Z -o ./Dependencies
dotnet nuget install package.b -v A.B.C -o ./Dependencies

如果packages.config里的包数量较多,可以写个简单脚本批量处理。比如Shell脚本示例:

#!/bin/bash
OUT_DIR="./Dependencies"
mkdir -p $OUT_DIR
# 解析packages.config提取包名和版本
grep -E '<package id=".*" version=".*"' packages.config | while read -r line; do
  PACKAGE_ID=$(echo $line | sed -E 's/.*id="([^"]+)".*/\1/')
  PACKAGE_VERSION=$(echo $line | sed -E 's/.*version="([^"]+)".*/\1/')
  echo "Installing $PACKAGE_ID v$PACKAGE_VERSION..."
  dotnet nuget install $PACKAGE_ID -v $PACKAGE_VERSION -o $OUT_DIR
done

方法2:创建极简CSPROJ文件(避免额外框架依赖)

如果不想写脚本,可以创建一个极简的CSPROJ文件,通过配置禁用隐式框架引用,就能避免自动下载microsoft.netcore.platforms、netstandard.library这类额外包:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <!-- 指定最低兼容的TargetFramework,比如netstandard2.0 -->
    <TargetFramework>netstandard2.0</TargetFramework>
    <!-- 禁用隐式框架引用,避免下载额外框架依赖包 -->
    <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="package.a" Version="X.Y.Z" />
    <PackageReference Include="package.b" Version="A.B.C" />
  </ItemGroup>
</Project>

然后运行还原命令:

dotnet restore --packages ./Dependencies

为什么之前的尝试失败?

dotnet restore命令是针对项目文件(CSPROJ/SLN)设计的,不支持直接将packages.config作为配置文件参数。而你之前用的含PackageReference的文件,因为没有禁用隐式框架引用,会自动引入.NET标准库的相关依赖,所以才会下载额外包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:52:19