簡體   English   中英

NuSpec生成的NuGet文件正在解析依賴項的錯誤版本 - 如何強制它執行其他操作?

[英]NuSpec-generated NuGet file is resolving the wrong version of a dependency - how can I force it to do otherwise?

我為我的.NET項目創建了一個NuSpec文件,如下所示:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>Author</authors>
    <description>My Project</description>
    <owners>Me</owners>
    <dependencies>
    </dependencies>
  </metadata>
</package>

我的項目還有兩個NuGet提供的依賴項,它們是:

<package id="Autofac" version="3.5.2" targetFramework="net451" />
<package id="Autofac.Extras.NLog" version="1.2.3" targetFramework="net451" />

當我使用這個NuSpec為我的項目創建NuGet包時,NuGet非常聰明,可以將這些附加依賴項納入其中。當我在新項目中安裝我的NuGet包時,我也得到AutofacAutofac.Extras.NLog依賴項,引用並自動插入到我的新項目的packages.config中。

但是......我得到的Autofac版本是錯誤的。 而不是版本3.5.2我得到版本2.6.1.841

<package id="Autofac" version="2.6.1.841" targetFramework="net451" />
<package id="Autofac.Extras.NLog" version="1.2.3" targetFramework="net451" />

現在, Autofac.Extras.NLog的依賴性≥ 2.2.4.900 (在撰寫本文時)。 我有兩個問題:

  • 看起來NuGet首先通過安裝Autofac 2.6.1.841實現Autofac.Extras.NLog Autofac依賴性。 然后,當它實現我的項目的Autofac depdency時,它看到已經安裝了Autofac,因此什么也沒做。 如何讓NuGet將Autofac依賴解析為版本3.5.2
  • 即使NuGet正在解決'錯誤的'NuGet depdendency(至少對我而言),為什么它會解析為2.6.1.841而不是2.2.4.900 ,這是Autofac.Extras.NLog依賴項中指定的最小版本?

您可以通過在一對方括號中指定版本號來限制要引用的工件版本。 請在下面找到示例

<package id="Autofac" version="[3.5.2]" targetFramework="lib/net45" />

用上面的代碼編輯你的packages.config文件,看看是否有效.. !!

解決方案是將這些依賴項添加到NuSpec文件中:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>Author</authors>
    <description>My Project</description>
    <owners>Me</owners>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Autofac" version="3.5.2"/> <!-- EXTRA DEPENDENCY -->
      </group>
    </dependencies>
  </metadata>
</package>

了解是否存在一個解決方案仍然是一件好事,在每次在打包的項目中存在依賴項版本更改時,您不必維護NuSpec文件。

看起來像Nuget 3.5(現在在Beta中)終於解決了這個問題。 我測試了我的項目並正確計算了依賴項(Nuget 3.4沒有正確計算它們)。

Nuget下載頁面

這是拉取請求: https//github.com/NuGet/NuGet.Client/pull/632/files

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM