我试图解释有关传递依赖性的Release和Debug配置之间奇怪的F#编译器行为.我将Newtonsoft.Json在这里使用package作为基本依赖,因为这是我设法找到问题的最远,并且它使示例有点不那么抽象.
让我们创建一个名为的文库项目SerializerProject,Newtonsoft.Json通过paket 引用.在这个项目中只有一个模块:
module Serializer =
open System.IO
open System.Text
open Newtonsoft.Json
type OptionConverter() =
inherit JsonConverter()
(* only the signature is important, the implementation
and other methods are not interesting *)
override x.WriteJson(writer: JsonWriter, value: obj, serializer: JsonSerializer) =
(* ... *)
let fromJson<'a> (bytes: byte []): 'a =
let s = Encoding.UTF8.GetString(bytes)
use sr = new StringReader(s)
use jr = new JsonTextReader(sr)
let serializer = JsonSerializer()
serializer.Converters.Add(OptionConverter())
serializer.Deserialize<'a>(jr)
Run Code Online (Sandbox Code Playgroud)
现在让我们SerializerProject通过项目参考在同一个解决方案和参考中创建第二个项目.我想fromJson …
f# ×1