我正在VS2017中创建一个.NET Core xUnit测试项目库.我不小心安装了System.Collections.Immutable NuGet包,现在我想卸载它.
>首先,我尝试编辑csproj文件并删除此行:
<PackageReference Include="System.Collections.Immutable" Version="1.3.1" />
>那不起作用,因为该包中的类型仍然在编辑器中突出显示.所以我尝试在Package Manager Console中运行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时,弹出的唯一内容是obj目录中的project.assets.json.没有一个源文件包含单词Immutable.那么,我很困惑,至于它是如何被引用的.我该如何卸载它?
其他一些事情:
>我在解决方案资源管理器中检查了我的项目的’Dependencies’下拉列表,但它没有列在那里.
>我不想删除我的本地副本并重新克隆它,因为我还有其他工作被隐藏起来.
> 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
解决方法:
大约一个小时后,我发现了问题所在.我的.NET Core库引用了Microsoft.NETCore.App,它引用了System.Collections.Immutable.我查看了前者的依赖关系,但忽略了System.Collections.Immutable,因为该包引用了其他50个包.我最终通过创建一个全新的xUnit测试项目找到了这一点,并试图看看ImmutableArray<>没有安装任何东西.果然,我可以开箱即用.