2013-01-19 45 views
1

我試圖讓Nuget包恢復工作在一個解決方案中,該解決方案正在尋找位於共享網絡驅動器上的常規公共nuget訂閱源和本地訂閱源中的包。使用本地訂閱源進行的Nuget包恢復

我到目前爲止所嘗試的是在解決方案上啓用nuget包恢復,然後編輯Nuget.targets並更改PackageSources變量,但似乎不起作用。這可能嗎?

我Nuget.targets文件看起來像這樣的包源部分:

<ItemGroup Condition=" '$(PackageSources)' == '' "> 
    <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used --> 
    <!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list --> 
    <PackageSource Include="https://nuget.org/api/v2/" /> 
    <PackageSource Include="\\mynetworkshare\Development\NugetPackages" /> 
</ItemGroup> 

我得到構建的錯誤是「無法找到包‘MyCustomPackage’版本‘1.0.0’我有。驗證了nupkg存在於\\mynetworkshare\Development\NugetPackages\MyCustomPackage.1.0.0.nupkg

回答

3

對我來說,修復程序bhuvak的答案加我不得不重新命名一些包。

我一直在創建符號包(類似於MyCustomPackage.1.0.0.symbols.nupkg)並使用我的本地包提要文件夾中的符號包。然而,包恢復似乎沒有選擇那些。我不得不將其重命名,刪除文件名的.symbols部分。

我這樣做後,包恢復很好。

+0

謝謝你,我花了兩天的時間着陸你的解決方案,最後它救了我。不知道爲什麼當我搜索nuget恢復問題時,這個頁面沒有出現在頂部。再次感謝 – Esen

2

更新在NuGet.targets應該工作的來源。 確保您已經添加兩個官方的NuGet源,並在目標文件中明確當地的飼料。 你注意到什麼錯誤?

+0

查看我更新的問題。我得到的錯誤是建立它無法找到我的網絡共享中存在的軟件包 – Evan

1

我們也有類似的問題@evan。我們使用的CreateNewNuGetPackageFromProjectAfterEachBuild包到TFS 2013生成服務器上創建我們的NuGet包。我們有一個本地的,基於共享的軟件包源,並將生成輸出中的nupkg文件複製到此共享中。我們發現,建立引用這些包失敗,因爲NuGet包還原無法在當地找到源的包。

從構建服務器上的命令行運行的NuGet我們得到奇怪的行爲:

nuget.exe list <search-term-for-our-packages> -allversions 

總是會成功,並列出了包的每個版本。然而,當我們去構建失敗的\src文件夾,運行

nuget.exe restore .\oursolution.sln 

我們總是得到:

Unable to find version '1.0.6.341' of package 'our.package.name'. 

我試過各種事情解決這個問題,有nuget.config玩和版本之間交換的nuget.exe,但修復只是爲了處理我們的nupkg文件。默認情況下CreateNewNuGetPackageFromProjectAfterEachBuild的名字,它生成的包裝標識加的生成配置和目標nupkg。例如。

our.package.name.1.0.6.341.Release.AnyCPU.nupkg 

有了這個文件在我們的包源nuget list的作品,但nuget restore失敗。當我的包重命名爲

our.package.name.1.0.6.341.nupkg 

然後nuget listnuget restore按預期方式工作。

我們的修復只是修改CreateNewNuGetPackageFromProjectAfterEachBuild的配置文件,以防止它包括構建配置和目標。但爲什麼nuget restore取決於包文件名,而nuget list不是?