2011-02-15 71 views
3

我有我想創建一個Nuget包它具有以下情形庫:Nuget是否支持與特定平臺綁定的依賴關係?

庫編譯成不同的版本:

  • 的Silverlight 4.0
  • .NET 4.0
  • 。 net 3.5
  • Windows Phone

幸運的是,所有這些平臺都受到Nuget的支持,因此在我的軟件包的lib文件夾中,我可以爲這些平臺中的每一個創建子文件夾,並且在圖書館安裝在任何平臺上時,Nuget都會做正確的事情。

問題是我有一些其他的依賴關係,因平臺而異。例如:在Windows Phone上,我需要包含一個第三方zip庫(wpSharpLibZip),但這種依賴關係在其他包含壓縮實用工具的平臺上不存在。

Nuget支持這種情況嗎?我希望能夠使wpSharpLibZip依賴項僅存在於Windows Phone平臺上。我必須爲每個平臺創建一個單獨的包嗎?


如果此功能不存在,我能想象它正在實施類似:

更改包清單的部分支持:

<dependencies> 
    <dependency id="Newtonsoft.Json" version="3.5.8" /> 
    <dependency id="wpSharpLibZip"> 
     <platform>Silverlight 4.0 - Windows Phone</platform> 
    </dependency> 
</dependencies> 

或者另一種方式可以是允許在每個平臺文件夾內(在lib文件夾下)分開一個單獨的.nuspec文件,這可以說明特定於平臺的依賴關係。

+1

這已經在CodePlex上的NuGet提交網站作爲提案見https://docs.nuget.org/create/nuspec-reference#specifying-dependencies-in-version-2.0-and-above:http://nuget.codeplex.com/workitem/697 – 2011-02-15 20:45:24

回答

4

爲每個不同的依賴集合分別打包。依賴關係是包級別。 NuGet目前不支持這種情況,如果有的話可能暫時不支持。

更新:從NuGet 2.x開始,依賴關係具有組,因此您可以通過這種方式設置依賴關係。有關詳細信息,

<dependencies> 
    <group> 
     <dependency id="RouteMagic" version="1.1.0" /> 
    </group> 

    <group targetFramework="net40"> 
     <dependency id="jQuery" /> 
     <dependency id="WebActivator" /> 
    </group> 

    <group targetFramework="sl30"> 
    </group> 
</dependencies>