2015-10-15 108 views
3

我正在嘗試使用F#編寫應用程序,並且需要訪問Sql數據庫。我試圖使用SQL類型的供應商,但是當我這樣做:F#Sql類型提供程序和Windows 10上的.NET Framework v4.0/4.5

type schema = SqlDataConnection<ConnectionString="..."> 

我得到了以下設計時錯誤:

The type provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' reported an error: The .NET SDK 4.0 or 4.5 tools could not be found 

很多人似乎得到這一點,但唯一的解決辦法我已經看到的是下載並安裝Windows 8.1的Windows軟件開發工具包。我已經完成了這個,選擇了所有的選項(包括.NET SDK 4.5),並且它似乎已經安裝了,沒有錯誤。然而,這並沒有解決這個問題,當我查看程序和功能時,我可以看到4.5.1 SDK和4.6 SDK安裝,但不是4.5 SDK。我正在使用Windows 10和Visual Studio 2015社區版。有沒有其他人有這個問題,並得到一個解決方案?

另外,是否有任何好的替代類型提供程序或解決方案連接到和查詢(注意我只需要讀取數據,而不是寫)從F#中的SQL數據庫?

編輯:註冊表鍵丟失,所以我添加了一個指向正確目錄的InstallationFolder值以及其中所需的所有實用程序的[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.1A \ WinSDK-NetFx40Tools]。據我所知:https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Data.TypeProviders/Util.fs這是所有必需的。但是這沒有任何影響。我回頭看看舊版本的Util.fs,它似乎只查找v8.0A,而不是v8.1A,所以我也爲此創建了一個密鑰,再次指向正確的文件夾,但仍然沒有運氣。在這個階段,從查看代碼我相信所有必要的東西都已經到位,但它不是。我不確定是否需要重新安裝類型提供程序,但我找不到任何選項來執行此類操作。

回答

0

看起來你可能在這裏遇到這個問題:https://github.com/Microsoft/visualfsharp/issues/637,其中的修復是在這裏拉請求https://github.com/Microsoft/visualfsharp/pull/638。看着拉入請求的變化,它看起來像當前版本正在尋找以下注冊表項:

HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools 
HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools 

在我的機器,我有SDK版本v7.0A,V7.1,v7.1A, v8.0A和v8.1A,以及SQL類型提供程序工作正常。

您是否可以檢查您的註冊表,並嘗試下載並安裝上述SDK之一,如果您確實錯過了其中任何一個?

+0

是的,我在代碼周圍挖,發現這一點。我添加了鍵並將它們指向了正確的位置,但仍然因爲相同的原因而失敗 – rcarrington

+0

我從來不需要明確安裝SDK,我只用Visual Studio安裝過F#並且事情已經發揮作用,而且我正在運行VS2015但是,上面提到的github上的線程表明,這只是乾淨的Windows 10安裝的一個問題,而我的機器上已經有VS和Windows的早期版本。 – mpeac

+0

具有諷刺意義的是,我的Windows安裝新鮮的原因是由於以前版本的.net/visual studio,我有各種各樣的問題安裝VS typescript集成。感覺像現在每個Microsoft SDK和工具包都有(不)安裝問題。 – rcarrington

相關問題