2014-09-30 71 views
6

我在IIS上本地運行私人Nuget服務器。 我正在創建包並使用nuget.exe通過commadline全部上傳它們(稍後,我必須將它放在構建服務器上,因此是命令行)。然而,有一個問題我被困住了。Nuget依賴沒有得到安裝

我想聲明依賴關係。我在.csproj文件所在的文件夾中生成nuspec文件。然後我手動編輯nuspec文件的元數據標籤下添加此:

<metadata> 
    <dependencies> 
     <group targetFramework=".NETFramework4.5"> 
      <dependency id="DemoProject" version="2.0.0.0" /> 
     </group> 
    </dependencies> 
</metadata> 

DemoProject,版本2.0.0.0是目前的NuGet服務器上。 我正在爲其創建包的項目,MyProj.csproj沒有對通過Visual Studio添加到它的DemoProject的引用。只是在包裝時我想創建依賴關係。這聽起來很奇怪,但需要進行一些初始驗證。

然後我運行包命令:

「C:\的NuGet \ NuGet.exe」 收拾MyProj.csproj -IncludeReferencedProjects -prop配置=鬆開

然後我使用命令行把它推到的NuGet服務器。 當我通過命令行進行安裝時,只有MyProj軟件包存在於安裝位置。

當我使用Nuget包資源管理器並創建一個包時,我可以使用包依賴編輯器來指定依賴關係。它要求我的本地Nuget服務器的URL,然後添加依賴項。當我安裝該軟件包時,它可以正常工作!

在這兩種情況下,似乎在生成的nuspec文件中沒有區別。 顯然Nuget包管理器正在做一些我錯過的東西。

任何提示?

更多詳細信息:當我在包管理器控制檯中創建一個lib文件夾並手動將我的dll,lib-> net45-> MyProj.dll,然後當我安裝這樣創建的包也「不」安裝依賴。再次閱讀文檔。

回答

0

我知道這並不直接回答你的問題,但我有一個NuGet依賴問題,我的解決方案可能會提供一個提示。

DLL#1沒有NuGet依賴關係。推到我的私人回購。 DLL#2引用DLL#1 NuGet包。推到我的私人回購。

當我進入「管理NuGet軟件包...」時,除了來自Application項目的所有優良和丹迪外,「瀏覽」選項卡上列出了DLL#2的NuGet包,但它不顯示任何依賴關係。我被迫安裝了DLL#1和DLL#2 nuget軟件包。我希望安裝DLL#2 nuget包並自動獲取DLL#1。

我解決這個問題的方法是卸載DLL#2解決方案中的所有NuGet包。 然後進入工具>選項> NuGet包管理器>常規。然後將默認包管理格式設置爲Packages.config,然後取消選中「首次安裝包時允許格式選擇」選項。

然後我安裝了所有需要的NuGet軟件包。現在,當我將它打包並推送到服務器時,它會在「管理NuGet包...」時顯示適當的依賴關係。

nuget pack沒有看到依賴關係,因爲它在\ packages文件夾中找到它們。該文件夾不存在,因爲我使用PackageReference進行包管理。

切換到Packages.config進行包管理後,所有工作。

我知道我遇到的問題與您的問題不一樣,但如果您沒有使用Packages.config進行包管理,可能與其相關。

0

最新回答,但是這個nuspec的問題是<group targetFramework=".NETFramework4.5">。我確信「.NETFramework4.5」是一個無效的targetFramework。可用的完整列表Target Frameworks is here。使用Dependency section時,您可能不需要使用組標記。任何遇到類似錯誤的用戶都會很好地閱讀該部分。他們有正確使用的樣本。