dotnet restore 命令使用 NuGet 还原依赖项和工具包。例如,使用 EntityFramework Core 的时候需要安装 Micorsoft.EntityFrameworkCore 依赖项,使用 dotnet ef的命令则需要安装 Microsoft.EntityFrameworkCore.Tools.DotNet 命令行工具包,这两种包引用在 .csproj 项目文件中的写法不同。

<!-- 项目依赖包-->
<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
</ItemGroup>
<!-- 命令行工具包-->
<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>

dotnet restore 是一个隐式的命令,需要还原的时候会自动执行 dotnet restore 命令。下面的命令执行时都会隐式调用还原。

  • new
  • run
  • build
  • publish
  • pack
  • test

当然,也可以给这些命令传递 --no-restore 选项,禁用隐式还原。

参数

ROOT

要还原的解决方案或项目路径。如果是解决方案,它包含的项目都会还原。如果不指定则会还原当前目录中的解决方案或项目。

// 还原当前目录中的解决方案或项目
dotnet restore
// 还原解决方案
dotnet restore demo.sln
// 还原项目
dotnet restore proj.csproj

选项

-h|--help

打印帮助信息。

--configfile <FILE>

还原使用的 NuGet 配置文件。

一般在项目的根目录都要包含一个 NuGet.config 文件,这样自定义的 NuGet 配置不会影响到全局的配置。

如果不指定配置文件,dotnet restore 会从解决方案或项目的根目录寻找 NuGet.config 文件,如果找不到,则会使用全局的 NuGet.config,Windows上的路径为 C:\Users\cxlt\.nuget\NuGet\NuGet.config (注意 cxlt 要改为你的用户名),Linux 或 MacOS 上的路径为 ~/.nuget/NuGet/NuGet.config

项目中的 NuGet.config 配置会继承全局的配置,可以通过定义 <clear /> 阻断继承。

<configuration>
	<fallbackPackageFolders>
		<clear />
	</fallbackPackageFolders>
	<packageSources>
		<clear />
	</packageSources>
</configuration>

-s|--source <SOURCE>

指定还原使用的 NuGet 包源。这会覆盖 NuGet.config 文件中指定的所有源,多次指定该选项可以提供多个源。

dotnet restore -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

--packages <PACKAGES_DIRECTORY>

指定还原包的存储目录。默认 Windows 上存储在 C:\Users\cxlt\.nuget\packages\ 文件中,Linux 和 MacOS 上存储在 ~/.nuget/packages 目录中。

-r|--runtime <RUNTIME_IDENTIFIER>

指定还原包还原的运行时。这常用于还原项目文件 <RuntimeIdentifiers> 标记中未显示列出的运行时程序包。关于更多运行时标识符(RID),请参阅 14.1.2 节内容。

dotnet restore -r win10-x64

--disable-parallel

禁用并行还原多个项目。

--ignore-failed-sources

将失败的源做警告处理。

--no-cache

指定不缓存包和 HTTP 请求。

--no-dependencies

当使用项目到项目 (P2P) 引用还原项目时,还原根项目,不还原引用。

-f|--force

强制解析所有依赖项,即使上次还原已成功,也不例外。 这相当于删除 project.assets.json 文件。

-v|--verbosity <LEVEL>

设置命令的详细级别。 允许的值有 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]

dotnet restore -v d

或者

dotnet restore -v detailed