【问题标题】:nuspec file with dependencies具有依赖项的 nuspec 文件
【发布时间】:2020-07-03 06:11:58
【问题描述】:

我的公司已经为我们业务专有的软件包建立了一个 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>

我需要做些什么来告诉“推送”查看主要的 nuget 站点吗?

【问题讨论】:

  • 现在,您的所有依赖项都只针对目标框架 UAP(通用 Windows 平台)。当您在项目上安装 nuget 包时,该项目是否针对 UAP?你希望这个 nuget 包为任何目标框架安装依赖项吗?
  • 这是从网站上复制的,我不知道该放什么。我将其更改为“net46”。谢谢!

标签: nuget nuspec


【解决方案1】:

Dependencies section 是您可以指定要定位的其他 nuget 包(正如您所做的那样)。查看第一个链接中的依赖组部分。您可能为依赖项指定了错误的组类型。 Here is a list of the Target Frameworks。我怀疑您可以删除组标签并保留&lt;dependency&gt; 标签。

这是一个依赖项示例(来自您提供的列表):

<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 怎么办?有问题吗?
  • 我尝试了上面的示例,但在推送时出现此错误: 元素不能同时包含 子元素。
  • 我把组拿出来得到这个错误:严重性代码描述项目文件行抑制状态错误一些NuGet包是使用与当前目标框架不同的目标框架安装的,可能需要重新安装。访问docs.nuget.org/docs/workflows/reinstalling-packages 了解更多信息。受影响的包:Iesi.Collections、NHibernateProfiler.Appender、Npgsql、RestSharp、System.Data.SQLite.Core DASEE 0
  • @AlanFloyd - 我最初的依赖代码有问题。我已经更新它来解决这个问题。至于你报的错误,打开包管理器控制台,运行update-package -reinstall。这应该能让你继续前进。
  • we need log4net and Newtonsoft.Json for all framework 这是错误的,对于net46,它们不会被使用。没有 targetFramework 的组是后备组,而不是“共享”组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 2015-04-21
相关资源
最近更新 更多