我可以阻止 nuget 包加载它的所有依赖项吗?
Can I prevent a nuget package from loading all of its dependencies?
我的 C# .Net Framework 4.7.2 项目正在使用 NuGet 包,将其称为包 A。包 A 具有对包 B 的包引用。包 B 导致我出现问题,我不想在我的项目中使用它.由于包 A 中提供的接口的默认实现,包 B 只是一个依赖项。我可以提供接口的新实现,但如何防止 NuGet 恢复引入不需要的和现在不需要的包 B?
I can provide a new implementation of the interface, but how can I
prevent a NuGet restore from pulling in the unwanted and now unneeded
Package B?
由于您在项目中安装了包 A 及其依赖包 B,您可以尝试这些:
首先,尝试进入你的packages.config
文件并像这样删除包B:
删除这个:
<package id="Package B" version="xxx" targetFramework="net472" />
其次,删除xxx.csproj
文件下的Package B(unload your project-->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
-->Nuget Packager Console
:
Install-Package <package name> -IgnoreDependencies
它不会安装 nuget 包的所有依赖项。
如果你的 nuget 包中有多个依赖项,而你只想删除其中一个,你只能像往常一样安装 nuget 包和所有依赖项,然后使用我的解决方案删除 nuget 包。
我的 C# .Net Framework 4.7.2 项目正在使用 NuGet 包,将其称为包 A。包 A 具有对包 B 的包引用。包 B 导致我出现问题,我不想在我的项目中使用它.由于包 A 中提供的接口的默认实现,包 B 只是一个依赖项。我可以提供接口的新实现,但如何防止 NuGet 恢复引入不需要的和现在不需要的包 B?
I can provide a new implementation of the interface, but how can I prevent a NuGet restore from pulling in the unwanted and now unneeded Package B?
由于您在项目中安装了包 A 及其依赖包 B,您可以尝试这些:
首先,尝试进入你的packages.config
文件并像这样删除包B:
删除这个:
<package id="Package B" version="xxx" targetFramework="net472" />
其次,删除xxx.csproj
文件下的Package B(unload your project-->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
-->Nuget Packager Console
:
Install-Package <package name> -IgnoreDependencies
它不会安装 nuget 包的所有依赖项。
如果你的 nuget 包中有多个依赖项,而你只想删除其中一个,你只能像往常一样安装 nuget 包和所有依赖项,然后使用我的解决方案删除 nuget 包。