现象
在 Visual Studio 2017 中创建一个控制台项目。创建出来的项目如下所示。
通过 NuGet 管理器,添加 Newtonsoft.Json 的 NuGet 包,安装之后,项目中添加了一个 packages.config 文件。
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
</packages>
然后,在这个文件上右键,将它合并到 PackageRerefence 中。
完成之后,可以在项目的 References 中看到已经合并了。
但是。这个时候,你直接打开项目文件,是看不到这个引用的。也就是说,它没有被写入到项目文件中。
解决方案
1. 退出 Visual Studio
直接关闭 Visual Studio,就会看到一个保存文件的提示框,这就是保存修改之后的项目文件。
保存之后的内容就变成了如下所示。
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="PropertiesAssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>12.0.3</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
</Project>
2. 不退出,直接重新构建
我一般不会经常关闭 Visual Studio。那么,你可以重新构建一下项目,这样会直接保存项目文件,而且没有提示。
删除依赖的问题
加进来了,怎么删除该依赖呢?
你可以直接打开项目文件,并删除关于 nuget 包的引用。但是你会发现该依赖仍然存在。
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>12.0.3</Version>
</PackageReference>
</ItemGroup>
但是,你还是会在解决方案管理器中看到对它的依赖,甚至你在整个项目中都搜索不到关于它的文本。但它确实还是存在。
解决的方式,打开项目下的 obj 文件夹,会看到关于 nuget 的几个文件。
把它们全部删除掉,这个依赖就会消失了。