Nuget Reference 丢失问题

现象

在 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 的几个文件。

把它们全部删除掉,这个依赖就会消失了。

原文地址:https://www.cnblogs.com/haogj/p/14376706.html