2015-01-16 92 views
0

我已經創建了一個框架的包,它依賴於單個解決方案中的衆多項目。我想爲解決方案中的框架和各種項目創建nuget包。Nuget包缺失接口

在Framework.Framework.nuspec,我有以下依賴性聲明:

<dependencies> 
     <group> 
      <dependency id="Framework.CompositionRoot" version="1.0" /> 
      <dependency id="Framework.Services" version="1.0" /> 
      <dependency id="Framework.Domain" version="1.0" />        
     </group> 
    </dependencies> 

而且在每個項目文件都有自己的nuspec文件,如Framework.CompositionRoot.nuspec,它具有以下依存關係:

<dependencies> 
     <group> 
      <dependency id="Super.Services" version="1.0" /> 
      <dependency id="Super.Data" version="1.0" /> 
      <dependency id="Super.Domain" version="1.0" />        
     </group> 
    </dependencies> 

我的問題是,當我在另一個項目中安裝Framework.Framework時,它似乎安裝了一些依賴nuget軟件包,而不是其他人。在這種情況下,它安裝Framework.CompositionRoot和Framework.Services,但不安裝Framework.Domain。

Framework.Domain在解決方案中具有自己的nuspec文件,生成的Framework.Framework.nupkg文件將Framework.Domain顯示爲依賴項。我只在Framework.Framework中安裝了Framework.Framework,而不是Framework.Domain,因爲我的理解是這應該在我安裝Framework.Framework的時候安裝。

當我查看解決方案的參考資料時,它添加了一個Framework.Domain.dll,但是在該域中聲明的接口的一半缺失。 (我確定缺少的接口聲明爲public。)但是,如果我將dll複製/粘貼到lib文件夾並手動引用它,則所有接口都在那裏。

任何幫助,將不勝感激。

回答

0

這是由於nuget默認安裝舊版本。雖然Framework.Domain在通過包管理器查看時不在已安裝包的列表中,但它在packages.config中可見,並且具有不包含接口的舊版本。 (安裝的NuGet會默認安裝的最低版本依賴的)

爲了解決這個問題,我卸載了包,並使用該標誌重新安裝它:

-DependencyVersion「HighestPatch」。