我可以阻止nuget包加载其所有依赖项吗?

时间:2020-04-28 10:12:17

标签: .net visual-studio-2017 nuget nuget-package-restore nuspec

我的C#.Net Framework 4.7.2项目正在使用NuGet程序包,将其称为程序包A。程序包A具有对程序包B的程序包引用。程序包B导致了我的问题,而我在项目中不希望使用它。程序包B仅是依赖项,这是由于程序包A中提供的接口的默认实现。我可以提供该接口的新实现,但是如何防止NuGet还原引入不需要且现在不需要的程序包B? >

1 个答案:

答案 0 :(得分:1)

我可以提供该接口的新实现,但是我该如何 阻止NuGet还原拉进不需要的和现在不需要的 套餐B?

由于您已经在项目中安装了具有依赖项Package B的Package A,因此可以尝试以下操作:

首先,尝试输入您的packages.config文件并删除Package B,如下所示:

删除此:

<package id="Package B" version="xxx" targetFramework="net472" />

第二,删除xxx.csproj文件下的程序包B(卸载项目-> Edit xxx.csproj)并删除此文件:

<Reference Include="Package B, Version=xxx Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>..\packages\xxx\PackageB.dll</HintPath>
    </Reference>

然后,重新加载您的项目,并且在“还原”步骤或构建期间不会加载程序包B。

此外,如果您想安装没有依赖项的nuget软件包,可以尝试在Tools-> NuGet Package Manager-> {{ 1}}:

Nuget Packager Console

它不会安装nuget软件包的所有依赖项。

如果您的nuget包中有多个依赖项,而您只想删除其中之一,则只能像往常一样安装nuget包和所有依赖项,然后使用我的解决方案删除nuget包。