Get and use connection string from App.config F# AppSettings provider
我已经在网上搜寻了好几个小时而无法做到,所以我希望有人可以帮助我。
我尝试直接使用App.Config,但始终返回null。因此,我转向了一个AppSetting typerprovider。这确实返回了预期的字符串,但我有一个问题,到目前为止(通过Google)没有人能找到答案。
1 2 3 4 5 6 7 8 9 10 11 12 | open System.Linq open FSharp.Data.Sql open MySql.Data open FSharp.Configuration type Settings = AppSettings<"App.config"> let c = Settings.ConnectionStrings.RaspberryPi [<Literal>] let connection = c //quick attempt to turn c into a literal. type sql = SqlDataProvider< ConnectionString = c, ResolutionPath = @"C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.7\Assemblies\v4.5" > |
我收到消息"这不是有效的常量表达式或自定义属性值"。
虽然我可以打印出Appsettings提供程序获得的设置,但似乎无法使用它来连接数据库。
这是App.config:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> </startup> <runtime> <dependentAssembly> <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" /> </dependentAssembly> </assemblyBinding> </runtime> <connectionStrings> </connectionStrings> </configuration> |
我已经将typeprovider当作我使用System.Configuration读取文件的较早方法了,即使我闪过输出文件夹并确保所有配置文件都已更新,它也无法正常工作。
请注意,我也在使用MySQL类型提供程序!
尽管我可以直接在代码中使用字符串,但我的理解是,这对于生产代码来说是一个糟糕的主意。
我们将非常感激收到任何帮助-我不介意承认今天这已经烧了好几个小时,令我惊讶的是。
注意-可能对其他人有帮助:我也查看了此答案,本文以及MS论坛中的这篇文章
不幸的是,那行不通。 连接字符串是由读/写静态属性(
有人可能会编写类型提供程序,通过将连接字符串显示为文字静态字段(而不是读/写属性)来实现所需的功能,但这与更新应用程序设置不兼容,这似乎是目标。 现有提供者。 也许您可以考虑向AppSettings项目提交功能请求,以启用可以按照您想要的方式运行的单独模式。