我们使用Microsoft.FSharp.Data.TypeProviders使用F#3.1进行项目构建。现在我们正在尝试用VS2015构建这个项目,我们遇到了这部分F#的问题。例如,当我尝试使用Nuget安装它时,它需要F#3.1。我使用this guide,它看起来过时了。
所以我会感谢我的问题的答案:
Microsoft.FSharp.Data.TypeProviders属于F#语言的哪一部分?它是F#核心库还是外部库之一?谁负责这个图书馆?我在哪里可以找到这个F#生态系统的bug追踪器?
是否有人试图在VS2015中使用this tutorial构建F#应用程序?你有像我这样的问题吗?或者一切正常?
Microsoft.FSharp.TypeProviders的当前状态是什么?它是否过时,我需要的是等待一段时间将库采用到F#4.0和VS2015。或者我是否需要切换到其他数据库访问库?
以下是重现错误的完整说明:
NuGet - 安装Data.TypeProviders。 packages.config
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FSharp.Core.3" version="0.0.2" targetFramework="net46" />
<package id="FSharp.Data.TypeProviders" version="0.0.1" targetFramework="net46" />
</packages>
要program.fs
添加以下行:
module Test
open Microsoft.FSharp.Data.TypeProviders
type internal DB = SqlDataConnection<"Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=SSPI;">
以下是错误消息:
无法找到.NET SDK 4.0或4.5工具
答案 0 :(得分:10)
更多历史背景:
1. Microsoft.FSharp.Data.TypeProviders属于F#语言的哪一部分?它是F#核心库还是外部库之一?谁负责这个图书馆?我在哪里可以找到这个F#生态系统的bug追踪器?
它不是核心运行时的一部分,即你可以成为一个快乐而富有成效的F#dev而不与之交互。它由Microsoft创建,随F#3.0 / VS 2012一起提供,作为一组用于常见Msft数据堆栈的内置类型提供程序。作为语言功能的类型提供程序已添加到同一版本中,因此该库有点展示了可以执行的操作。 FS.D.TP目前尚未得到积极维护。原始版本4.3.0.0仍在VS 2013和VS 2015的包装盒中提供,但自VS 2012发布以来未进行任何更改。来源可用here,欢迎您在该回购邮件中提交错误。
原则上,图书馆将作为社区项目接管,并作为nuget包从那里进行维护/更新。没有什么能真正阻止这一点。然而,拥有Msft签名和支持的框中的库对于许多企业客户来说仍然非常重要。所以它仍然存在于这种状态,它在盒子里,但没有更新。
3.Microsoft.FSharp.TypeProviders的当前状态是什么?它是否过时,我需要的是等待一段时间将库采用到F#4.0和VS2015。或者我是否需要切换到其他数据库访问库?
上面回答了其中一些问题。如果您具有所有必需的依赖项,则库仍应在F#3.1或F#4.0中完美运行。特别是,您需要安装.NET 4.0或4.5 SDK(您可以获得Win8 / .NET 4.5 SDK here)因为TP依赖于各种可执行的codegen工具(sqlmetal.exe,svutil.exe)与其
答案 1 :(得分:1)
我刚刚在VS 2015中创建了一个针对.NET 4.6上的F#4.0(4.4.0.0)的新项目,使用NuGet添加了对FSharp.Data.TypeProviders
的引用,这导致了以下packages.config
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FSharp.Core.3" version="0.0.2" targetFramework="net46" />
<package id="FSharp.Data.TypeProviders" version="0.0.1" targetFramework="net46" />
</packages>
然后我添加了一个新文件并输入
module Test
open Microsoft.FSharp.Data.TypeProviders
type internal DB = SqlDataConnection<"Data Source=.;Initial Catalog=OBSCURED_CATALOG;Integrated Security=SSPI;">
let private e1 = DB.GetDataContext().OBSCURED_ENTITY
然后,VS告诉我引用System.Data.Linq
...一切正常,教程也是最新的。
您是否已尝试设置新项目而不是迁移旧项目?
TL; DR (请参阅chat)
问题是缺少某些注册表项。如果您的注册表不包含
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A]
"InstallationFolder"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\"
"ProductVersion"="8.1.51641"
"ProductName"="Microsoft .NET Framework 4.5.1 SDK"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools]
"ProductVersion"="8.1.51641"
"ComponentName"="Microsoft .NET Framework 4.5.1 SDK"
"InstallationFolder"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\bin\\NETFX 4.5.1 Tools\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x64]
"ProductVersion"="8.1.51641"
"ComponentName"="Microsoft .NET Framework 4.5.1 SDK"
"InstallationFolder"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\bin\\NETFX 4.5.1 Tools\\x64\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x86]
"ProductVersion"="8.1.51641"
"ComponentName"="Microsoft .NET Framework 4.5.1 SDK"
"InstallationFolder"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\bin\\NETFX 4.5.1 Tools\\"
可能是时候(重新)安装适用于Windows 8的Windows SDK。
答案 2 :(得分:0)
我有这个问题。 VS 2015项目升级到VS 2017 / .NET 4.7.2 / F#4.1(F#Core 4.4.3.0)
突然,Microsoft.FSharp.Data只包含名称空间“UnitSystems”。
“WsdlService”无法编译。
安装了以下Nuget包:
nuget“FSharp.Data.TypeProviders”和“FSharp.Compiler.Tools”(?)
并且所有内容都使用最新的VS 2017 / .NET 4.7.2 ...
进行编译(注意:我还删除了对System.ValueTuple的引用)