NuGet包拒绝在.NET Core库

时间:2017-07-23 20:37:15

标签: c# visual-studio nuget .net-core visual-studio-2017

我正在VS2017中创建一个.NET Core xUnit测试项目库。我不小心安装了System.Collections.Immutable NuGet包,现在我想卸载它。

  • 首先,我尝试编辑csproj文件并删除此行:

    <PackageReference Include="System.Collections.Immutable" Version="1.3.1" />
    
  • 这不起作用,因为该包中的类型仍然在编辑器中突出显示。所以我尝试在程序包管理器控制台中运行Uninstall-Package System.Collections.Immutable

  • 控制台说它无法找到包裹,所以我尝试将<PackageReference...线放回上方并再次运行Uninstall-Package。控制台表示卸载成功,但VS仍然识别出类型。

  • 我尝试关闭VS,删除.vs/,然后重新打开。它仍然认识到类型。

  • 我尝试使用git存储我的更改,运行git clean -xdf,并从命令行运行dotnet restore。不知何故,它仍然输出

    $ dotnet restore
    Restoring packages for C:\cygwin64\home\james\Code\cs\BlockList\src\BlockList\BlockList.csproj...
    Restoring packages for C:\cygwin64\home\james\Code\cs\BlockList\src\BlockList.Tests\BlockList.Tests.csproj...
    ...
    Installing System.Collections.Immutable 1.2.0.
    Installing System.Collections.Immutable 1.3.0.
    ...
    
  • 我还尝试从Visual Studio而不是命令行进行恢复。仍然没有运气。

当我在我的仓库中搜索单词Immutable中的所有文件时,弹出的唯一内容是project.assets.json目录中的obj。没有一个源文件包含单词Immutable。那么,我很困惑,至于它是如何被引用的。我该如何卸载它?

其他一些事情:

  • 我在解决方案资源管理器中检查了我的项目的“依赖关系”下拉列表,但未在此处列出。

  • 我不想删除我的本地副本并重新克隆它,因为我还有其他工作藏匿。

  • System.Collections.Immutable.dll根本没有显示在bin/目录中,但是当我使用我的库中的某个类型并运行它时,它运行正常。

谢谢!

编辑:将此行添加到库中:

System.Diagnostics.Debug.WriteLine(typeof(ImmutableArrayExtensions).GetTypeInfo().Assembly.Location);

运行它说组件位于这个位置:

C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.2\System.Collections.Immutable.dll

2 个答案:

答案 0 :(得分:3)

大约一个小时后,我发现了问题所在。我的.NET Core库引用了Microsoft.NETCore.App,引用了System.Collections.Immutable。我查看了前者的依赖关系,但忽略了System.Collections.Immutable因为该包引用了其他50个包。我最终通过创建一个全新的xUnit测试项目找到了这一点,并试图查看ImmutableArray<>是否存在而没有安装任何东西。果然,我可以开箱即用。

答案 1 :(得分:0)

我在VS2017上遇到了类似的问题,并且有一个不能完全卸载的不同的nuget包。我最终不得不创建一个新项目,并将所有代码剪切并粘贴到其中。一种大锤方法,但比爬行依赖更快。