![](/img/trans.png)
[英]How to inject a custom dependency in an MSBuild NuGet pack generated .nuspec
[英]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包時,我也得到Autofac
和Autofac.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
(在撰寫本文時)。 我有兩個問題:
Autofac 2.6.1.841
實現Autofac.Extras.NLog
Autofac依賴性。 然后,當它實現我的項目的Autofac depdency時,它看到已經安裝了Autofac,因此什么也沒做。 如何讓NuGet將Autofac依賴解析為版本3.5.2
? 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沒有正確計算它們)。
這是拉取請求: https : //github.com/NuGet/NuGet.Client/pull/632/files
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.