避免nuget包中的依赖关系

避免nuget包中的依赖关系,nuget,Nuget,我有一个类库a.dll,它依赖于“newtonsoft.json.dll”和b.dll(它是一个单独的nuget包) 我正在尝试为a.dll创建一个nuget包。要使此包正常工作,它需要b.dll 当我在新项目中引用a.dll的包时,它会向b.dll添加一个nuget引用。我不想那样。当我引用a.dll包时,它不应该强制安装nuget包b.dll 有没有办法从我的包(a.dll)中避免使用b.dll。请注意,a.dll包需要b.dll才能工作。使用“旧”样式的项目文件与package.nuspe

我有一个类库a.dll,它依赖于“newtonsoft.json.dll”和b.dll(它是一个单独的nuget包)

我正在尝试为a.dll创建一个nuget包。要使此包正常工作,它需要b.dll

当我在新项目中引用a.dll的包时,它会向b.dll添加一个nuget引用。我不想那样。当我引用a.dll包时,它不应该强制安装nuget包b.dll

有没有办法从我的包(a.dll)中避免使用b.dll。请注意,a.dll包需要b.dll才能工作。

使用“旧”样式的项目文件与package.nuspec文件结合使用 为了打包一个包而不需要依赖额外的.dll,您需要进行两次修改

首先,您需要在属性中将对Newtonsoft.Json的引用标记为Copy Local False

其次,需要将Newtonsoft.Json设置为nuspec文件中的依赖项


这将允许Visual Studio在用户安装您的a.nupkg时显示并从Nuget中提取依赖项包,其中将包含a.dllb.dll

使用“新”aka SDK样式的项目文件 这一点要容易得多,因为它为您完成了大部分工作,您只需要在项目中有一个PackageReference行,
dotnet pack
命令就会知道这是一个外部依赖项


netstandard2.0
符合事实的
麻省理工学院
有关nuspec和project files PackageReference的更多信息,请参阅

Microsoft提供的完整nuspec示例:


一个更复杂但仍然很好的ProjectReference示例,来自除Newtonsoft.Json之外的非其他项目。在项目中,您可以为任何PackageReference将
PrivateAssets
属性设置为
None
,并且它不会包含在package中。但此功能适用于
.netcore
项目结构。链接:,嘿,如果我这样做了,我的包在没有这些依赖项的情况下还能工作吗