dotnet restore不会像Visual Studio 2017那样提取相同的包

时间:2018-03-08 17:15:10

标签: visual-studio .net-core nuget-package

我一直在寻找答案,但到目前为止还没有找到一个与我有相同情况的人。

我有一个DotNet Core 1.1.4项目,当我在Visual Studio 2017中打开.sln项目文件时,它会在我打开它时立即下拉正确的包。但是对于命令行,如果我运行命令

dotnet restore --force

它不是拉下包裹。如果我使用

下拉包裹,那就太奇怪了
dotnet restore --packages .\packages\

它将拉下几个,但它似乎是错误的包。例如,在此解决方案中的一个.csproj文件中,有一个对System.Interactive.Async 3.0.3的引用,但下载的包是3.0.0。即使我运行这个

dotnet restore .\folder\project.csproj

当我去构建它时,它不会删除它后来抱怨的这个包。

这种行为非常令人困惑,因为据我所知,dotnet还原应该是Visual Studio 2017在恢复软件包时所做的相同工作。项目文件夹确实有一个packages.config文件,但我之前搜索的理解是dotnet restore忽略了那些。我已经验证了这个引用是在.csproj文件以及app.config文件中(不确定是否重要)。

如果我删除。\ packages \文件夹的内容并执行dotnet restore。\ folder \ project.csproj命令。\ packages \文件夹中没有任何内容出现,即使我在Visual Studio 2017中打开它时它会在那里填充。

为什么这种行为会有所不同,我需要做些什么才能让dotnet restore命令将正确的包恢复到正确的位置?

如果这有助于我的dotnet --info命令的结果:

  

.NET命令行工具(1.1.5)

     

产品信息:
  版本:1.1.5
  提交SHA-1哈希:2b517ddd29

     

运行时环境:
  操作系统名称:Windows
  操作系统版本:6.1.7601操作系统   平台:Windows
  RID:win7-x64
  基本路径:C:\ Program Files \ dotnet \ sdk \ 1.1.5

1 个答案:

答案 0 :(得分:1)

找到答案。我从这里下载了NuGet.exe:

  

https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools

使用命令

nuget restore

安装正确的软件包,而dotnet还没有安装。我不确定为什么,但它确实解决了我的问题。