我正在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
答案 0 :(得分:3)
大约一个小时后,我发现了问题所在。我的.NET Core库引用了Microsoft.NETCore.App
,引用了System.Collections.Immutable
。我查看了前者的依赖关系,但忽略了System.Collections.Immutable
因为该包引用了其他50个包。我最终通过创建一个全新的xUnit测试项目找到了这一点,并试图查看ImmutableArray<>
是否存在而没有安装任何东西。果然,我可以开箱即用。
答案 1 :(得分:0)
我在VS2017上遇到了类似的问题,并且有一个不能完全卸载的不同的nuget包。我最终不得不创建一个新项目,并将所有代码剪切并粘贴到其中。一种大锤方法,但比爬行依赖更快。