2013-03-08 82 views
3

我們有一個F#項目和一個C#項目的解決方案。兩者都使用同一套NuGet軟件包,使用NuGet軟件包恢復來自動執行下載。令人沮喪的是,我們經常遇到F#項目無法構建的問題,迫使我們卸載並重新安裝所有軟件包。看起來,NuGet在安裝過程中沒有正確編輯fsproj文件,從而導致我們留下重複的引用或阻止構建的錯誤引用。有沒有人遇到類似的問題/有誰知道解決方案?NuGet /包恢復與F#不能很好地搭配#

回答

5

您是否遇到此錯誤? F# Project VS 2012: Update package removes HintPath

NuGet中還有一些影響F#項目的已知錯誤。您可能需要瀏覽CodePlex上的NuGet問題跟蹤器,以查看您的問題是否已被報告;如果沒有,你應該絕對提交一份錯誤報告,讓NuGet開發者意識到這個問題。

NuGet Issue Tracker

+0

這看起來像是問題。現在,我只希望有一個解決方案... – ChaseMedallion 2013-03-08 21:50:14

+0

@ChaseMedallion不要忘記爲Codeplex上的問題投票--NuGet開發人員通常根據問題得到的投票數量優先考慮功能/修復。 – 2013-03-08 22:15:58

+0

讓他們承認這個問題需要一段時間,但現在它將在NuGet 2中修復。3 - 所以這裏希望。 – 2013-03-08 22:41:29

0

我最近寫了一篇博客文章中有關此問題以及如何重現它。

http://mikehadlow.blogspot.co.uk/2013/06/nuget-install-is-broken-with-f.html

我在它下面開始複製的要求:

那裏當你嘗試使用的NuGet一個裝基準添加到F#項目是一個非常討厭的錯誤。當正在安裝的程序集在GAC中也有一個版本或輸出目錄中已經存在不同的版本時,它就會顯示出來。

首先讓我們在GAC中已經存在程序集版本時重現問題。

用F#項目創建一個新的解決方案。

選擇您想從NuGet安裝的程序集,該程序集也存在於機器上的GAC中。出於諷刺的目的,我將爲這個例子選擇NuGet.Core。

它在我的GAC:

D:\>gacutil -l | find "NuGet.Core" 
NuGet.Core, Version=1.0.11220.104, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL 
NuGet.Core, Version=1.6.30117.9648, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL 

你可以看到,在海關總署的最高版本是1.6.30117.9648

現在讓我們從官方的NuGet源安裝NuGet.Core版本2.5.0 :

PM> Install-Package NuGet.Core -Version 2.5.0 
Installing 'Nuget.Core 2.5.0'. 
Successfully installed 'Nuget.Core 2.5.0'. 
Adding 'Nuget.Core 2.5.0' to Mike.NuGetExperiments.FsProject. 
Successfully added 'Nuget.Core 2.5.0' to Mike.NuGetExperiments.FsProject. 

它正確地創建一個包目錄,下載NuGet.Core包並創建一個packages.config文件:

D:\Source\Mike.NuGetExperiments\src>tree /F 
D:. 
│ Mike.NuGetExperiments.sln 
│ 
├───Mike.NuGetExperiments.FsProject 
│ │ Mike.NuGetExperiments.FsProject.fsproj 
│ │ packages.config 
│ │ Spike.fs 
│ │ 
│ ├───bin 
│ │ └───Debug 
│ │ 
│ └───obj 
│  └───Debug 
│ 
└───packages 
    │ repositories.config 
    │ 
    └───Nuget.Core.2.5.0 
     │ Nuget.Core.2.5.0.nupkg 
     │ Nuget.Core.2.5.0.nuspec 
     │ 
     └───lib 
      └───net40-Client 
        NuGet.Core.dll 

但是,當,當我看着我的fsproj文件我看到它有錯誤引用了NuGet.Core版本(1.6.30117.9648)從海關總署,有指向下載的軟件包沒有暗示路徑。

<Reference Include="NuGet.Core, Version=1.6.30117.9648, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
    <Private>True</Private> 
</Reference> 
+1

如果你的鏈接死了,你能在這裏提供一個簡短的總結嗎? – 2013-06-16 08:17:33