Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual studio F#解决方案中配置文件的最佳实践_Visual Studio_F#_Type Providers_F# Data - Fatal编程技术网

Visual studio Visual studio F#解决方案中配置文件的最佳实践

Visual studio Visual studio F#解决方案中配置文件的最佳实践,visual-studio,f#,type-providers,f#-data,Visual Studio,F#,Type Providers,F# Data,我想知道是否有在F#解决方案中设置配置文件的最佳实践。 下面是我的配置文件的一个示例,在我的F#解决方案中,不同的项目使用它 myConfig.xml: 做 邮政编码 /知识产权 aaa bb 我可以把上面的内容放在内置的App.config中。As App.config不允许嵌套 标签,随着配置的增长,它将变得混乱 到目前为止,我们找到的最佳解决方案如下。 创建顶级项目配置,并在该项目中, 使用xml类型提供程序创建源文件以读取myConfig.xml。 然后将myConfig.xml中的

我想知道是否有在F#解决方案中设置配置文件的最佳实践。 下面是我的配置文件的一个示例,在我的F#解决方案中,不同的项目使用它

myConfig.xml:


做
邮政编码
/知识产权
aaa
bb

我可以把上面的内容放在内置的App.config中。As App.config不允许嵌套 标签,随着配置的增长,它将变得混乱

到目前为止,我们找到的最佳解决方案如下。
创建顶级项目配置,并在该项目中, 使用xml类型提供程序创建源文件以读取myConfig.xml。 然后将myConfig.xml中的值包装到的静态属性中 类AppConfigObj。解决方案中的其他项目将访问配置属性 通过AppConfBj

module Configuration=
   open FSharp.Data
   open System

   // Other projects acccess the configuration properties using AppConfigObj.
   type  AppConfigObj() =       
      static let [<Literal>] configXmlFile = "myConfig.xml"

      static let config = XmlProvider<configXmlFile>.Load(configXmlFile.ToString())

      static member didPath =  config.Segment.SegmentTypes.Did
      static member postcodePath = config.Segment.SegmentTypes.PostCode
      static member ipPath = config.Segment.SegmentTypes.Ip
      static member s3AccessKey = config.SThreeConfig.AccessKey    
      static member s3SecreteKey=config.SThreeConfig.SecretKey
模块配置=
打开FSharp.Data
开放系统
//其他项目使用AppConfigObj访问配置属性。
键入AppConfigObj()
静态let[]configXmlFile=“myConfig.xml”
静态let config=XmlProvider.Load(configXmlFile.ToString())
静态成员didPath=config.Segment.SegmentTypes.Did
静态成员postcodePath=config.Segment.SegmentTypes.PostCode
静态成员ipPath=config.Segment.SegmentTypes.Ip
静态成员s3AccessKey=config.streeconfig.AccessKey
静态成员s3secretkey=config.streeconfig.SecretKey

尽管默认配置机制已经足够了,但存在一个非常实用的替代方案,即使用配置定制类型提供程序:


通过这种方式,您可以使用配置和设置文件的类型化类。

“As App.config不允许嵌套标记”是的,它允许:我建议使用.NET的默认配置机制,因为它已经尝试过了。但是,就个人而言,如果您首先需要复杂的嵌套配置设置,则可能需要暂停并重新考虑: