nuspec文件与依赖项

14

我的公司为我们业务专有的软件包建立了一个NuGet仓库。我有一个Nuspec文件列出了位于主要NuGet仓库中的依赖项。当我从我们的仓库安装软件包时,这些依赖项并没有被安装。

<dependencies>
    <group targetFramework="uap">
        <dependency id="FluentNHibernate" version="2.0.3.0" />
        <dependency id="log4net" version="2.0.8.0" />
        <dependency id="Newtonsoft.Json" version="6.0.0.0" />
        <dependency id="UserModel.SMDC" version="1.0.0.0" />
    <dependency id="Microsoft.AspNet.Identity.Core" version="2.2.1" />
    <dependency id="Microsoft.AspNet.WebPages.Core" version="5.2.3" />
    <dependency id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" />
    <dependency id="Microsoft.AspNet.WebApi.Data" version="3.2.5" />
    <dependency id="Microsoft.AspNet.WebApi.WebData" version="3.2.5" />  
    <dependency id="Npgsql" version="3.2.5" />

    </group>
</dependencies>

我需要做些什么来告诉“push”查看主要的NuGet网站吗?


现在,您的所有依赖项仅针对目标框架UAP(通用Windows平台)。当您在项目上安装nuget包时,该项目是否针对UAP?您是否希望此nuget包为任何目标框架安装依赖项? - techvice
那是从一个网站复制下来的,我不知道该放什么。我把它改成了"net46"。谢谢! - Alan Floyd
1个回答

17
依赖项(Dependencies) 部分用于指定其他NuGet包的目标(与您所做的相同)。请查看第一个链接中的依赖组部分。您可能已经为依赖项指定了错误的组类型。 这里是目标框架列表。我猜测您可以删除组标签并保留<dependency> 标签。

这是依赖关系的示例(来自您提供的列表):

<dependencies>
  <group>
    <dependency id="log4net" version="2.0.8.0" />
    <dependency id="Newtonsoft.Json" version="6.0.0.0" />
  </group>
  <group targetFramework="net46">
    <dependency id="log4net" version="2.0.8.0" />
    <dependency id="Newtonsoft.Json" version="6.0.0.0" />
    <dependency id="FluentNHibernate" version="2.0.3.0" />
    <dependency id="UserModel.SMDC" version="1.0.0.0" />
    <dependency id="Microsoft.AspNet.Identity.Core" version="2.2.1" />
    <dependency id="Microsoft.AspNet.WebPages.Core" version="5.2.3" />
    <dependency id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" />
    <dependency id="Microsoft.AspNet.WebApi.Data" version="3.2.5" />
    <dependency id="Microsoft.AspNet.WebApi.WebData" version="3.2.5" />  
    <dependency id="Npgsql" version="3.2.5" />
  </group>
</dependencies>

这个示例表明我们需要使用log4netNewtonsoft.Json作为非特定组。这是用于所有未指定为目标的组。


仍然无法工作。如果目标应用程序是4.6.1,那会有问题吗? - Alan Floyd
我尝试了上面的例子,但在推送时出现了以下错误:<dependencies> 元素不应同时包含 <group> 和 <dependency> 子元素。 - Alan Floyd
我带着这个团队出去时遇到了错误:严重性代码描述项目文件行抑制状态错误。某些NuGet包是使用与当前目标框架不同的目标框架安装的,可能需要重新安装。请访问http://docs.nuget.org/docs/workflows/reinstalling-packages获取更多信息。受影响的包括:Iesi.Collections、NHibernateProfiler.Appender、Npgsql、RestSharp、System.Data.SQLite.Core。DASEE 0 - Alan Floyd
@AlanFloyd - 我最初遇到了依赖代码的问题。我已经更新了它以解决这个问题。至于你报告的错误,请打开包管理器控制台并运行 update-package -reinstall。那应该可以让你继续进行。 - techvice
我们需要在所有框架中使用log4net和Newtonsoft.Json。这是错误的,在net46中它们将不会被使用。没有targetFramework的组是回退组,而不是“共享”组。 - smg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接